提问人:Kashmiri Ammar 提问时间:11/18/2022 最后编辑:mickmackusaKashmiri Ammar 更新时间:11/18/2022 访问量:228
根据 SELECT 将多行插入到数据库表中,并从另一个表中限定行
Insert multiple rows into db table based on SELECT with qualifying rows from another table
问:
我正在尝试将来自数组的多个值插入到表行中。 我几乎用这个答案解决了问题。在mysqli中插入许多值的最佳方法?
请检查接受的答案。在这个答案中,他将值添加到一列中,但我希望它在多列中。 我该怎么做?
$array = array($u_id, $pid, $tradexx_price, $pvp, $product_title, $product_image);
$query = "INSERT INTO selection (c_id,p_id,tradexx_price,pvp,product_name,img) VALUES (?,?,?,?,?,?)";
$stmt = $con->prepare($query);
$stmt->bind_param("ssssss", $one);
$con->query("START TRANSACTION");
foreach ($array as $one) {
$stmt->execute();
}
$stmt->close();
$con->query("COMMIT");
但是这段代码给了我一个错误。
Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in
任何答案都值得赞赏。
完整的脚本代码
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include '../includes/conn.php';
if (isset($_POST['insert_selection'])) {
$pid = implode(',', $_POST['id']);
$u_id = $_POST['u_id'];
foreach ((array)$pid as $p) {
$get_pro = "SELECT * FROM products WHERE id IN ($p)";
$run_pro = mysqli_query($con, $get_pro);
while ($row_pro = mysqli_fetch_array($run_pro)) {
$id = $row_pro['id'];
$product_title = $row_pro['product_title'];
$tradexx_price = $row_pro['product_price'];
$pvp = $row_pro['pvp'];
$product_image = $row_pro['product_image'];
$array = array($u_id, $id, $tradexx_price, $pvp, $product_title, $product_image);
$query = "INSERT INTO selection (c_id,p_id,tradexx_price,pvp,product_name,img) VALUES (?,?,?,?,?,?)";
$stmt = $con->prepare($query);
$stmt->bind_param("ssssss", $cur_c_id, $cur_id, $cur_tradexx_price, $cur_pvp, $cur_product_name, $cur_img);
$con->query("START TRANSACTION");
foreach ($u_id as $i => $cur_c_id) {
$cur_id = $id[$i];
$cur_tradexx_price = $tradexx_price[$i];
$cur_pvp = $pvp[$i];
$cur_product_name = $product_title[$i];
$cur_img = $product_image[$i];
$stmt->execute();
}
$stmt->close();
$con->query("COMMIT");
}
}
}
$pid
是复选框中的值
答:
2赞
Barmar
11/18/2022
#1
你不需要循环。您可以将查询用作 .SELECT
INSERT
error_reporting(E_ALL);
ini_set('display_errors', 1);
include '../includes/conn.php';
if (isset($_POST['insert_selection'])) {
$pid = implode(',', $_POST['id']);
$u_id = $_POST['u_id'];
$sql = "INSERT INTO selection (c_id,p_id,tradexx_price,pvp,product_name,img)
SELECT ?, id, product_price, pvp, product_title, product_image
FROM products
WHERE FIND_IN_SET(id, ?)";
$stmt = $con->prepare($sql);
$stmt->bind_param("i", $u_id, $pid);
$stmt->execute(); }
}
评论
0赞
Dharman
11/18/2022
评论不用于扩展讨论;此对话已移至 Chat。
评论
bind_param()