在PHP中,我试图更新一个表列调用order
,并以增量值步长到10,其中project =至1;
我的表名是:任务我的表包含Colomn:ID,项目,名称,顺序
在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的东西,但这是一个旧项目的补丁;(
您不能将多个查询列入 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
之类的变量在呼叫之间持续存在,因为它们与连接相关联,而不是呼叫。