我有这个查询,它会增加index
列中按值排序的现有行中的值key
。
UPDATE `documents`, (
SELECT @row_number:=ifnull(@row_number, 0)+1 as `new_index`, `id`
FROM `documents`
WHERE `path` = "/path/to/doc"
ORDER BY `key`
) AS `table_position`,
(
SELECT @row_number:=0
) AS `rowNumberInit`
SET `index` = `table_position`.`new_index`
WHERE `table_position`.`id` = `documents`.`id`
我使用这个PHP代码来执行它:
/** @var PDO $pdo */
$ret = $pdo->query($sql);
// Now every value in column `index` is set to 1
$res = $ret->execute();
// Now every value in column `index` is counted up
这看起来不像是正确的做法。
我目前直接使用PDO,因为Zend_Db_Adapter_Pdo_Mysql
似乎会对此查询造成严重破坏。
除此之外,我想在WHERE
子句中使用“/ path / to / doc”字符串作为绑定参数。用?
替换它并将值传递给execute()
不起作用。
如何使用Zend或PDO正确执行此操作?