Я сделал 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 для правильного использования синтаксиса
возле ‘ОБНОВЛЕНИЕ tblproductionbreaks SET IDPause =’ 2 ‘ГДЕ ProductionID
= ‘1411979966’ A ‘в строке 1
Но если я пытаюсь выполнить тот же запрос на обновление, который выполняется из командной строки, это сработает
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
возврате