我制作了更新数据库的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"WHERE ProductionID=第1行处的'1411979966'A'
但若我尝试通过命令行执行相同的更新查询,它会起的作用
SET @max = (SELECT MAX(Id) FROM tblproductionbreaks); UPDATE tblproductionbreaks SET IDPause = '2' WHERE ProductionID = '1411979966' AND Id = @max;
我不明白同一件事的运作方式有何不同。
使用PHP不能将多个查询作为一条语句运行。尝试如下:
$sql = "UPDATE tblproductionbreaks SET IDPause = '$PauseID' WHERE ProductionID = '$ProductionID' ORDER BY Id DESC LIMIT 1;";
无论如何,您都不需要这个变量。
这是因为PHP解释器将$sql视为字符串。将代码更改为
$sql = "UPDATE tblproductionbreaks SET IDPause = '{$PauseID}' WHERE ProductionID = '{$ProductionID}' AND Id = (SELECT MAX(Id) FROM tblproductionbreaks)";
您还可以通过echo $sql
对其进行调试,并查看$sql
实际返回的是什么