Intereting Posts
Как заставить браузер показывать последние изменения в файле CSS? Как добавить таблицу стилей для подтверждения? Настройка URL-адреса возврата PayPal на localhost создание пользовательского управления с использованием php mysql Получение года / месяца / дня в качестве ссылки в календарном классе codeigniter Почему, если я зарегистрировался на своем веб-сайте как зарегистрированный пользователь, я не могу получить доступ к другим страницам после установки правил сеанса? строка preg_split для многомерного массива отключение кеша браузера в php или использование javascript Передача ключей массива и значений в строку запроса Mysql Пример использования bind_result vs get_result Разбить длинную строку на куски php SQLSTATE : недопустимый номер параметра: параметр не определен Сортировка массива php массивов по индивидуальному заказу Сделать PHP исполнять и общаться с Java-приложением на веб-сервере Проблема с функцией session_start () (работает медленно)

Переменные Mysql, не работающие через запрос php mysql

У меня есть этот запрос:

$query = " SET @points := -1; SET @num := 0; SELECT `id`,`rank`, @num := if(@points = `rank`, @num, @num + 1) as `point_rank` FROM `said` ORDER BY `rank` *1 desc, `id` asc"; 

Я использую этот запрос из php; давая мне эту ошибку:

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'SET @num: = 0;

Если я скопирую и вставляю этот код в панель запросов phpmyadmin Sql, он отлично работает, но из строк кода php он не работает, кажется, что есть проблемы при настройке Vars.

Solutions Collecting From Web of "Переменные Mysql, не работающие через запрос php mysql"

Вместо того, чтобы устанавливать переменные в отдельном SET , вы пытались использовать CROSS JOIN :

 $query = " SELECT `id`, `rank`, @num := if(@points = `rank`, @num, @num + 1) as `point_rank` FROM `said` CROSS JOIN (SELECT @points:=-1, @num:=0) c ORDER BY `rank` *1 desc, `id` asc"; 

Когда мы просматриваем ваш код, вы пытаетесь использовать синтаксис, связанный с хранимой процедурой MySql с PHP. Только конкретные запросы ANSI Sql будут выполняться через интерфейс PHP.

В противном случае вам нужно написать хранимую процедуру MySql и получить доступ к процедуре через объекты данных PHP – (PDO).

У вас могут быть полезные ссылки:

1> Хранимые процедуры, MySQL и PHP

2> http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/

3> http://php.net/manual/en/pdo.prepared-statements.php

попробуй это

 $result1 = mysql_query("SET @points := -1 ;"); $result2 = mysql_query("SET @num := 0;"); $result3 = mysql_query($this->query); // <-- without the SET ... query 

Из руководства:

mysql_query () отправляет уникальный запрос (несколько запросов не поддерживаются)

РЕДАКТИРОВАТЬ:

Вы должны использовать PDO или mysqli, поскольку mysql скоро устареет.