6

我有下一个代码:

SET @rownum=0;
UPDATE product_images AS t, (SELECT @rownum:=@rownum+1 rownum, id, rel 
FROM product_images WHERE product_id='227') AS r
SET t.rel = r.rownum
WHERE t.id = r.id

这在 phpmyadmin 中运行良好

但是...下一个代码(女巫实际上是一样的)但是放在php代码中

mysql_query ("
SET @rownum=0; 
UPDATE product_images AS t, 
(SELECT @rownum:=@rownum+1 rownum, product_images.* 
FROM product_images WHERE product_id='$pid') AS r
SET t.rel = r.rownum WHERE t.id = r.id ") or die(mysql_error());

给我错误:"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 product_images AS t, (SELECT @rownum:=@rownum+1 rownum, product_images.* ' at line 1"

请帮忙。谢谢你。

4

2 回答 2

21

这些是您尝试一次执行的 2 个查询。这不适用于mysql_queryPHP 方法。

您实际上不需要第一个语句。尝试

UPDATE product_images AS t
JOIN
(
    SELECT @rownum:=@rownum+1 rownum, id, rel
    FROM product_images
    CROSS JOIN (select @rownum := 0) rn
    WHERE product_id='227'
) AS r ON t.id = r.id
SET t.rel = r.rownum

即时初始化@rownum变量。

简化的 SQLFiddle 示例

于 2012-10-09T17:44:30.010 回答
1

MySQL 的 PHP 驱动程序不允许在单个 query() 调用中进行多个查询,以作为针对某些形式的 SQL 注入攻击的安全措施。您必须将多查询拆分为多个单独的 query() 调用。

于 2012-10-09T17:45:20.180 回答