2014-09-29 87 views
0

我做的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); 

?> 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE tblproductionbreaks SET IDPause = '2' WHERE ProductionID = '1411979966' A' at line 1

但如果我尝试相同的更新查询通过命令行执行它的工作原理

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

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

回答

1

您不能运行多个查询与PHP一个说法。尝试像这样:

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

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

+0

已经尝试过。不起作用。 – Josef 2014-09-29 10:27:02

+1

@Josef修正了它。请再试一次。 – fancyPants 2014-09-29 10:28:09

+0

谢谢。我也尝试了mysqli_multi_query($ sql),但似乎不起作用 – Josef 2014-09-29 10:50:11

0

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

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

您也可以通过echo $sql调试一下,看看什么是真正的$sql返回

+0

不起作用。我说:你不能在FROM子句 – Josef 2014-09-29 09:29:45

+0

中指定目标表'tblproductionbreaks'进行更新,为什么不用一个查询来获取最大id并在最终查询中将它传递给一个变量呢? – 2014-10-01 11:16:24

相关问题