Php [MySql]如何将一行从一个表复制到另一个表并填充其他列?
所以我想压缩这个问题,我不知道该怎么做 现在我用Php [MySql]如何将一行从一个表复制到另一个表并填充其他列?,php,mysql,sql,database,query-optimization,Php,Mysql,Sql,Database,Query Optimization,所以我想压缩这个问题,我不知道该怎么做 现在我用 $move_to_sold = "INSERT INTO sold_inv_item( `sku`, `designer`, `type`, `price`, `metal_type`, `stone_type`, `stone_weight`, `item_desc`, `item_img`
$move_to_sold =
"INSERT INTO sold_inv_item(
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`
)
SELECT
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`
FROM inv_item
WHERE `sku` = '$sku'";
$add_date_and_name =
"UPDATE sold_inv_item
SET `purchase_date` = '$date', `customer_name` = '$name'
WHERE `sku` = '$sku'";
我试图做的是将一行从一个表复制到另一个表,然后从$\u POST data向两个额外的列中添加额外的数据
我试过类似的东西
INSERT INTO sold_inv_item(`sku`,`designer`,`type`,`price`,`metal_type`,
`stone_type`,`stone_weight`,`item_desc`,`item_img`,`purchase_date`,`customer_name`)
VALUES ((select `sku`,`designer`,`type`,`price`,`metal_type`,
`stone_type`,`stone_weight`,`item_desc`,`item_img` FROM inv_item WHERE inv_item.sku = 'pepsi-2-tone'), '2019-02-14','betty Girl');
我怀疑这会导致列不匹配错误,因为它试图将所有行放入一列,而不是将它们分散开来
最后,这是可行的,但如果可能的话,我宁愿做一些类似中间解决方案的事情
INSERT INTO sold_inv_item(`sku`,`designer`,`type`,`price`,`metal_type`,
`stone_type`,`stone_weight`,`item_desc`,`item_img`,`purchase_date`,`customer_name`)
VALUES ((select `sku` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `designer` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `type` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `price` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `metal_type` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `stone_type` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `stone_weight` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `item_desc` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `item_img` from inv_item where inv_item.sku = 'pepsi-2-tone'),'2019-02-14','betty Girl');
最后一个问题是,从代码和性能角度来看,将一行从一个表复制到另一个表并填充其他列的最有效方法是什么。
有一些类似的,但我找不到超过1-2列的封面被复制。您可以使用
插入。。。选择
语法,如:
INSERT INTO sold_inv_item (
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`,
`purchase_date`,
`customer_name`
)
SELECT
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`,
:date,
:name
FROM inv_item
WHERE `sku` = :sku
PS:当谈到在SQL查询中使用
POST
ed参数时,任何人都会强烈建议这样做,以保护您的代码不受SQL注入的影响,并使您的查询更加高效、可读和可维护。我修改了查询以使用命名参数。这是可行的,我不知道您可以将表中不存在的变量直接添加到select。谢谢是的,我只是把逻辑弄清楚了。当它进入代码时,我将把它转换成一个准备好的查询。@Purgedmoon:没错。然后您可以准备一次语句,并根据需要多次重用它。