php mysqli_multi_query() 在第一次查询后停止插入

php mysqli_multi_query() stops inserting after first query

我正在尝试使用 mysqli_multi_query 函数将多行插入同一个 table,但它只执行第一个查询。我也尝试将值添加到第一个查询的末尾,并用逗号分隔,但似乎没有任何效果。有什么建议吗?

我已经切换到准备好的语句,但仍然只插入了第一个结果。我错过了什么吗?

$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();

去掉最后一条语句的分号。文档指出此方法的分号用于连接语句,而不是结束语句。

在此处阅读文档:Link

$sql = "INSERT INTO orderdetails (orderID, productID, quantity) VALUES ('".$orderID."', 1, '".$sportShirtQuantity."');";
$sql .= "INSERT INTO orderdetails (orderID, productID, quantity) VALUES ('".$orderID."', 2, '".$sportCoatQuantity."')";

我稍微修改了你的代码

$mysqli = new mysqli("localhost", "root", "", "getpressed");

if ($mysqli->connect_errno) {
    die("Connection failed: " . $mysqli->connect_error);
}

$sql = "INSERT INTO orderdetails (orderID, productID, quantity) VALUES ('".$orderID."', 1, '".$sportShirtQuantity."');";
$sql .= "INSERT INTO orderdetails (orderID, productID, quantity) VALUES ('".$orderID."', 2, '".$sportCoatQuantity."');";

if ($mysqli->multi_query($sql))) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
}
do {
    if ($res = $mysqli->store_result()) {
        var_dump($res->fetch_all(MYSQLI_ASSOC));
        $res->free();
    }
} while ($mysqli->more_results() && $mysqli->next_result());

我也强烈建议您以后使用 PDO 预处理语句。

我在 orderID 上有一个主键索引,它不允许我插入具有相同 orderID 的多行。我是个白痴。感谢大家的帮助。正如 tadman 所建议的那样,它与准备好的语句一起工作得更好。