我循环遍历一组值$id,在某些情况下,我需要将两个数据字段从一个表(产品)复制到另一个表(product_new).两个表都已存在,并且都包含相同的字段'product_description'和'image'.我试图这样做:
$copy_query = "SELECT product_description, image INTO product_new FROM product WHERE product_id=$id";
$result = mysql_query($copy_query) or die('Could not copy the database data: ' . mysql_error() . '<br>Query: ' . $copy_query);
Run Code Online (Sandbox Code Playgroud)
错误是'Undeclared variable:product_new'.我不明白这一点,因为我没有问题地使用表product_new执行其他操作.有什么想法吗?谢谢.
UPDATE
感谢您提供差异文档的链接.这肯定有帮助,但我还有一个问题.我目前的查询是:
$copy_query = "INSERT INTO product_new (product_description, image)
SELECT product.product_description, product.image
FROM product
WHERE product_id=$id";
Run Code Online (Sandbox Code Playgroud)
但这是将数据写入product_id = 0的新行.我需要用product_id = $ id写入行.
MySQL不支持SELECT INTO语法.
此外,在循环内运行查询通常效率很低.相反,您可以id在PHP中使用逗号分隔的s 列表并使用:
$copy_query = '
INSERT INTO product_new (product_description, image)
SELECT product_description, image
FROM product
WHERE product_id IN (' . implode(',', $ids) . ')';
mysql_query($copy_query);
Run Code Online (Sandbox Code Playgroud)
$ids您的ID数组在哪里.
此解决方案只需执行一次(而不是在循环内执行多次).
编辑:如果您已经存在行product_new并且想要更新它们,则可以使用:
$copy_query = '
UPDATE product_new a
JOIN product b ON a.product_id = b.product_id
AND b.product_id IN (' . implode(',', $ids) . ')
SET a.product_description = b.product_description,
a.image = b.image';
mysql_query($copy_query);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |