将字段从一个表复制到另一个表

Kev*_*_TA 0 php mysql sql

我循环遍历一组值$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写入行.

Zan*_*ien 5

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)