相同的查询工作不同

时间:2014-09-29 09:01:35

标签: php mysql sql-update

我制作了更新数据库的PHP脚本:

<?php
include 'config.php';

$PauseID = "2";
$ProductionID = "1411979966";

$sql = "SET @max = (SELECT MAX(Id) FROM tblproductionbreaks); UPDATE tblproductionbreaks SET IDPause = '$PauseID' WHERE ProductionID = '$ProductionID' AND Id = @max;";     

mysql_query($sql) or die(mysql_error());

mysql_close($connect);

?>

执行此脚本时,它返回错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'UPDATE tblproductionbreaks附近SET IDPause ='2'WHERERE PRODUCID   ='1411979966'第1行''

但如果我尝试通过命令行执行相同的更新查询,则可以正常工作

SET @max = (SELECT MAX(Id) FROM tblproductionbreaks); UPDATE tblproductionbreaks SET IDPause = '2' WHERE ProductionID = '1411979966' AND Id = @max;

我不明白同样的事情是如何运作的。

2 个答案:

答案 0 :(得分:1)

您不能使用PHP作为一个语句运行多个查询。试试这样:

$sql = "UPDATE tblproductionbreaks SET IDPause = '$PauseID' WHERE ProductionID = '$ProductionID' ORDER BY Id DESC LIMIT 1;";     

无论如何你都不需要这个变量。

答案 1 :(得分:0)

这是因为您的PHP解释器将您的$ sql视为字符串。将您的代码更改为

$sql = "UPDATE tblproductionbreaks SET IDPause = '{$PauseID}' WHERE ProductionID = '{$ProductionID}' AND Id = (SELECT MAX(Id) FROM tblproductionbreaks)";

您也可以echo $sql进行调试,看看实际$sql返回

的内容