mysqli — Невозможно вставить оператор Select с подготовленным оператором php mysql

Может ли кто-нибудь помочь мне с запросом MySQL. Я пытаюсь вставить несколько строк с помощью оператора вставки выбора.

if ($insert_stmt = $mysqli->prepare("INSERT INTO order_processing_info (order_id, cart_item_id, item_id, price, quantity) VALUES (?, (SELECT s.cart_item_id, i.item_id, i.price, s.quantity FROM inventory_info AS i, cart_info AS s  WHERE i.item_id=s.item_id AND s.user_id = ?))")) {
$insert_stmt->bind_param('ss', $order_id, $user_id);

Я думаю, что проблема в том, что я хочу один и тот же order_id для всех вставок здесь, хотя я не уверен.

Ранее я пытался безуспешно запустить его в блоке оператора select.

if ($select_stmt = $mysqli->prepare("SELECT i.item_id, i.price, s.quantity, s.cart_item_id FROM inventory_info AS i, shopping_cart_info AS s  WHERE i.item_id=s.item_id AND s.user_id = ?")) {
$select_stmt->bind_param("s", $user_id);
$select_stmt->execute();
$select_stmt->bind_result($item_id, $price, $quantity, $cart_item_id);

while ($select_stmt->fetch()) {

if ($insert_stmt = $mysqli->prepare("INSERT INTO order_processing_info (order_id, cart_item_id, item_id, price, quantity) VALUES (?, ?, ?, ?, ?)")) {
$insert_stmt->bind_param('sssss', $order_id, $cart_item_id, $item_id, $price, $quantity);
// Execute the prepared query.
if (!$insert_stmt->execute()) {
header('Location: ../error.php?err=INSERT failure: INSERT');
exit();
}
}
}
$select_stmt->close();
}

Я много смотрел его на stackoverflow, но, думаю, я не настолько опытен в запросах к базе данных, поэтому я был бы признателен, если бы кто-нибудь смог мне помочь с этим.

0

Решение

Используйте запрос «INSERT INTO SELECT» (http://www.w3schools.com/sql/sql_insert_into_select.asp), тогда должен быть привязан только один параметр — идентификатор пользователя. Это также сэкономит на накладных расходах запроса в цикле

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]