Два простых оператора MySQL, вызывающих синтаксическую ошибку - PullRequest
0 голосов
/ 08 ноября 2010

Я в замешательстве. Следующий запрос MySQL:

SET @a := 0;   

SELECT * 
  FROM users;

выдает ошибку:

Неверный запрос: у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «SELECT * FROM users» в строке 2`

Когда я переключаю порядок утверждений, я получаю ту же ошибку, снова в строке 2 (даже если я их переключил)

Однако любая из этих строк работает нормально. Что может вызвать это?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Могу поспорить, что вы пытаетесь выполнить этот запрос в mysql_query() (или какой-либо подобной функции из любого языка программирования), но он принимает только один запросТаким образом, решение состоит в том, чтобы разделить эти запросы на 2 вызова.

1 голос
/ 08 ноября 2010

вы можете сделать это в одном запросе следующим образом:

Трюк

select @a:=@a+1, u.* 
from 
 users u 
join (select @a:=0) a

или быть хитрым и использовать хранимую процедуру, поэтому это всегда один вызов: P

Хранимая процедура

drop procedure if exists list_users;
delimiter #

create procedure list_users()
begin
 set @a = 0;
 select @a:=@a+1, u.* from users u;
end #

delimiter ;

call list_users();

PHP скрипт

$conn = new mysqli("localhost", "foo_dbo", "pass", "foo_db", 3306);

$result = $conn->query("call list_users()");

while($row = $result->fetch_assoc()){
 ...
}

$result->close();
$conn->close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...