【发布时间】:2016-11-26 17:08:06
【问题描述】:
我正在尝试使用mysqli_multi_query 函数将多行插入到同一个表中,但它只执行第一个查询。我也尝试将值添加到第一个查询的末尾,用逗号分隔,但似乎没有任何效果。有什么建议吗?
我已切换到准备好的语句,但仍然只插入第一个结果。我错过了什么吗?
$DBConnect = mysqli_connect("localhost", "root", "", "getpressed");
if ($DBConnect->connect_error) {
die("Connection failed: " . $DBConnect->connect_error);
}
$stmt = $DBConnect->prepare("INSERT INTO orderdetails (orderID, productID, quantity) VALUES (?, ?, ?)");
$stmt->bind_param("iii", $orderID, $productID, $quantity);
$orderID = $orderID;
$productID = 1;
$quantity = $sportShirtQuantity;
$stmt->execute();
$orderID = $orderID;
$productID = 2;
$quantity = $sportCoatQuantity;
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$DBConnect->close();
【问题讨论】:
-
请不要使用此功能。它本质上是危险的。将prepared statements 与占位符值一起使用,并使用
bind_param将用户数据添加到您的查询中。您可以将其作为具有两组值的单数INSERT执行此操作,或者使用不同绑定执行两次的准备好的INSERT。无论哪种方式都比您在这里的方式要好得多。 -
到目前为止提供的所有愚蠢答案中,唯一的,我的意思是唯一正确的方法是@tadman 写的。它更快,它微不足道,它可以抵抗
max_allowed_packet,它是安全的。与准备好的陈述相比,任何其他解决方案,无论有人会告诉你什么,都是马粪。
标签: php mysql mysqli-multi-query