PHP MYSQL Update Query с @variable не работает - PullRequest
0 голосов
/ 07 мая 2019

В php я пытаюсь обновить вызов столбца таблицы order с шагом приращения значения на 10, где project = to 1;

Моя таблица называется: задача Моя таблица содержит колонку: идентификатор, проект, имя, заказ

В phpmyadmin я выполнил этот запрос.

SET @order := 0; UPDATE `task` SET `order` = @order := @order + 10 WHERE project = 1 ;

Теперь в PHP я делаю это:

$query = 'SET @order := 0; UPDATE `task` SET `order` = @order := @order + 10 WHERE project = "'.$project.'";';
$result = mysql_query($query) OR die(mysql_error());

Если я повторяю свой запрос $, у меня есть это.

SET @order := 0; UPDATE `task` SET `order` = @order := @order + 10 WHERE project = "1"

И я получаю эту ошибку:

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 `task` SET `order` = @order := @order + 10 WHERE project = "1" at line 1

Любая идея, в чем моя проблема;

Я знаю, что должен использовать PDO или любой более современный SQL-компонент, но это патч для старого проекта;)

1 Ответ

1 голос
/ 08 мая 2019

Вы не можете поместить несколько запросов в один вызов mysql_query().Разделите его на два вызова:

$query = 'SET @order := 0'; 
mysql_query($query) OR die(mysql_error());
$query = 'UPDATE `task` SET `order` = @order := @order + 10 WHERE project = "'.$project.'";';
mysql_query($query) OR die(mysql_error());

Переменные, подобные @order, сохраняются между вызовами, поскольку они связаны с соединением, а не с вызовом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...