2014-09-29 85 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

相關問題