我有一个MySql products表(通过PHP和PDO访问),其结构如下:
CREATE TABLE IF NOT EXISTS `products` (
`id` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`description` text NOT NULL,
`order` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
产品通过订单字段显示。删除产品时,我想减少以下所有行的订单值(即,如果删除带有
order=2
的产品,我想将以下行从order=3
更新为order=2
,下一行从order=4
更新为order=3
,依此类推…)。显然我想用PDO以最有效的方式进行这个查询。我在PhpMyAdmin中找到了this question并尝试了以下语句:
UPDATE products SET order = order - 1 WHERE (order>2)
但它给了我以下错误:
#1064 - 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 'order = order - 1 WHERE (order>2)' at line 1
我错过了什么?然后,用PDO编写它的正确方法是什么?
最佳答案
ORDER
is the reserved word。使用反勾号将其转义:
UPDATE `products` SET `order` = `order` - 1 WHERE (`order` > 2);
关于php - 使用PHP和PDO在多行上减少列值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25618112/