我制作了更新数据库的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;
我不明白同样的事情是如何运作的。
答案 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
返回