我有下一个代码:
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"
请帮助。谢谢。
这些是您尝试一次执行的2个查询。这不适用于mysql_query
PHP方法。
您实际上不需要第一条陈述。尝试
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
变量。
MySQL的PHP驱动程序不允许在单个query()调用中进行多个查询,这是对某些形式的SQL注入攻击的一种安全措施。您必须将多查询分为多个单独的query()调用。