Один и тот же запрос работает иначе

Я сделал 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;

Я не понимаю, как то же самое работает по-разному.

0

Решение

Вы не можете запустить несколько запросов как один оператор с PHP. Попробуйте вот так:

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

Вам не нужна эта переменная в любом случае.

1

Другие решения

Это потому, что ваш интерпретатор PHP обрабатывает ваш $ sql как строку. Измените свой код на

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

Также вы можете отладить его по echo $sql и посмотреть, что на самом деле $sql возврате

0

По вопросам рекламы [email protected]