我收到了这段代码:
set @row_num = 0;
SELECT @row_num := @row_num + 1 as row_number,id,name,salary
FROM employee
ORDER BY salary;
这与mySQL完美配合。当我尝试使用mysql_query()
函数通过PHP执行时,问题就来了。它给了我这个错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近&#39 ;; SELECT @row_num:= @row_num + 1 as,id,name'在第1行
我知道,问题来自SET @ROW_NUM
,但我需要知道它为什么在MYSQL中工作,而不是在PHP上。我不能使用任何其他代码,这段代码是正确的,它可以工作,但不能在PHP中使用。有关为什么不适用于PHP的任何建议?
由于
答案 0 :(得分:7)
因为它们被视为两个查询,所以你不能以一种查询的方式运行它,但你可以这样做:
SELECT @row_num := @row_num + 1 as row_number,id,name,salary
FROM employee, (SELECT @rum_num :=0 ) AS t
ORDER BY salary;
请停止使用mysql_query
,改为使用PDO。
答案 1 :(得分:2)
来自PHP manual:
mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。
您的查询字符串包含两个查询,因此您无法使用mysql_query()
调用它。
此外,您应该注意到PHP mysql_xxx()
函数是oboslete并且已弃用 - 请再次参阅手册页以获取更多信息。
因此,您最好的解决方案是切换到支持您所需功能的更现代的数据库API。 PHP中有两个选项:mysqli或PDO。我推荐PDO,因为它更灵活,但如果你已经习惯使用旧的mysql函数,mysqli更容易使用。