mysql_query不起作用

时间:2013-09-09 12:39:21

标签: php mysql sql database

我收到了这段代码:

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的任何建议?

由于

2 个答案:

答案 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中有两个选项:mysqliPDO。我推荐PDO,因为它更灵活,但如果你已经习惯使用旧的mysql函数,mysqli更容易使用。