Я пытаюсь вставить несколько строк в одну таблицу, используя 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();
У меня был индекс первичного ключа для orderID, который не позволял бы мне вставлять несколько строк с одинаковым orderID. Я идиот. Спасибо за вашу помощь. Это работает намного лучше с подготовленными заявлениями, как предложено Тэдмэном.
Я немного изменил твой код
$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 в будущем.
Удалите точку с запятой из последнего утверждения. В документации отмечается, что точка с запятой для этого метода используется для объединения операторов, а не для их завершения.
Прочитайте документацию здесь: Ссылка на сайт
$sql = "INSERT INTO orderdetails (orderID, productID, quantity) VALUES ('".$orderID."', 1, '".$sportShirtQuantity."');";
$sql .= "INSERT INTO orderdetails (orderID, productID, quantity) VALUES ('".$orderID."', 2, '".$sportCoatQuantity."')";