Php 在一个查询中插入带有值的SELECT
MYSQL和PHP有点新-我有以下代码,将在我设置的多个表中创建一个新记录,但是我需要以某种方式将以下代码合并在一起,因为它会创建单独的行,而不是一个记录Php 在一个查询中插入带有值的SELECT,php,mysql,Php,Mysql,MYSQL和PHP有点新-我有以下代码,将在我设置的多个表中创建一个新记录,但是我需要以某种方式将以下代码合并在一起,因为它会创建单独的行,而不是一个记录 $sql .=("INSERT INTO orders (customer_id) SELECT customer_id FROM customer_details;"); foreach($result as $item){ $mysql_desc = $item['product_description']; $mysql_m
$sql .=("INSERT INTO orders (customer_id) SELECT customer_id FROM
customer_details;");
foreach($result as $item){
$mysql_desc = $item['product_description'];
$mysql_mode = $item['delivery_mode'];
$mysql_cost = $item['course_cost'];
$sql .=("INSERT INTO orders(product_description, delivery_mode, course_cost) VALUES('$mysql_desc', '$mysql_mode', '$mysql_cost');");
}
我得到的结果是:
基于您的数据,我假设您希望将客户id和php中的值插入到同一记录中。在这种情况下,您需要将它们组合成相同的
insert。。。选择…
语句:
$sql .=("INSERT INTO orders(customer_id, product_description, delivery_mode, course_cost) select customer_id, '$mysql_desc', '$mysql_mode', '$mysql_cost' from customer_details;");
有几件事需要注意:
插入。。。选择…
语句将为客户详细信息表中的所有客户插入相同的记录。我不确定这是否是你的最终目标为了使这一点更符合我的预期,我使用了-prepare语句,然后循环遍历每个项并添加新行
$insert = $connection->prepare("INSERT INTO orders (customer_id,product_description, delivery_mode, course_cost)
VALUES (?,?,?,?)");
foreach($result as $item){
$customerID = 1; // Have to ensure this is what your after
$mysql_desc = $item['product_description'];
$mysql_mode = $item['delivery_mode'];
$mysql_cost = $item['course_cost'];
$insert->execute([customerID,mysql_desc,mysql_mode,mysql_cost]);
}
现在是阅读准备好的和装订好的声明的好时机。我不知道这些记录中哪一个应该有问题,如果有的话。我强烈建议你在这里使用事先准备好的声明。这将消除
INSERT
查询中的许多潜在不确定性。草莓的评论被高估了,很遗憾我只能做一次。请给我们一个print\r($sql)代码>foreach后的结果-要查看完整查询,请尽快切换到mysqli。我需要记录53有一个产品说明,交付模式和课程成本。目前我可以得到一个而没有另一个。而且mysqli\u query
不能使用multiply语句!这就是我想要的结果。那你为什么取消接受?嘿,还没有试过奈杰尔的答案,对不起,我要跳枪了。威尔说,这个代码适用于其他人阅读的问题。与这部分代码无关,我在第一次提交时得到了一个正常的条目,但是在第二次提交时结果页面上出现了一个意外的循环。当前,我希望customerID等于的值来自另一个名为customer_details的表中的自动递增“customer_id”-是否知道如何将其包括在foreach循环中?取决于此数字的生成方式,是否可以执行选择
操作,或者是否先插入此行。如果您查看了后一个,请在进入循环之前获取它(因为插入可能会更改值),然后如上所述设置它。