我很困惑。以下MySQL查询:
SET @a := 0;
SELECT *
FROM users;
给出错误:
查询无效:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第2行的“SELECT * FROM users”附近使用正确的语法
当我切换语句的顺序时,我再次在第2行得到同样的错误(即使我切换了它们)
但是,任何一行都可以运行。什么可能导致这种情况?
答案 0 :(得分:2)
我打赌你试图在mysql_query()
(或任何编程语言的某些类似函数)中执行此查询,但它只接受单个查询。因此,解决方案是将此查询拆分为2个调用。
答案 1 :(得分:1)
您可以在一个查询中执行以下操作:
技巧
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();