1

我得到了这个代码:

set @row_num = 0;
SELECT @row_num := @row_num + 1 as row_number,id,name,salary 
FROM employee
ORDER BY salary;

这与 mySQL 完美配合。问题来了,当我尝试通过 PHP 执行时,使用mysql_query()函数。它给了我这个错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '; 附近使用的正确语法。SELECT @row_num := @row_num + 1 as,id,name ' 在第 1 行

我知道,问题来自SET @ROW_NUM,但我需要知道为什么它在 MYSQL 中有效,而不是在 PHP 中。我不能使用任何其他代码,这段代码是正确的,它可以工作,但不能在 PHP 中使用。关于为什么不适用于 PHP 的任何建议?

谢谢

4

2 回答 2

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

于 2013-09-09T12:41:28.127 回答
2

PHP 手册

mysql_query() 向与指定链接标识符关联的服务器上当前活动的数据库发送一个唯一查询(不支持多个查询) 。

您的查询字符串包含两个查询,因此您不能使用mysql_query().

此外,您应该注意 PHPmysql_xxx()函数已过时且已弃用 - 再次,请参阅手册页以获取更多信息。

因此,您最好的解决方案是切换到支持您需要的功能的更现代的数据库 API。在 PHP 中有两个选项:mysqliPDO。我推荐 PDO,因为它更灵活,但如果您已经习惯使用旧的 mysql 函数,则 mysqli 更容易使用。

于 2013-09-09T12:48:18.120 回答