Проблема в том, что я хочу сделать один запрос, чтобы вставить все содержимое корзины одновременно в таблицу базы данных ordersdetail
, чтобы повысить скорость.
В моем коде ниже вставки теперь находятся в цикле for с использованием подготовленных операторов.Сценарий ниже работает, но вставка происходит сейчас на каждой итерации.
Я думал, что было бы быстрее, если бы я поместил всю тележку в массив, но я застрял.Я не могу решить проблему.Любая помощь приветствуется.
ПИСЬМО
include_once '../../includes/db_connect.php';
class Item{
var $productid;
var $productnaam;
var $productomschrijving;
var $productprijs_excl;
var $productprijs_incl;
var $product_btw_tarief;
var $quantity;
var $lesuren;
}
session_start();
$order_id = $_SESSION["order_id"];
$klantid = $_SESSION["klantid"];
$insert_stmt = $mysqli->prepare('INSERT INTO ordersdetail (order_id, productid, productnaam, productomschrijving, productprijs_incl, product_btw_tarief, aantal, subtotaalexcl, subtotaal, klantid, lesuren) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$insert_stmt->bind_param('iissddiddid', $order_id, $productid, $productnaam, $productomschrijving, $productprijs_incl, $product_btw_tarief, $aantal, $subtotaalexcl, $subtotaal, $klantid, $lesuren);
$cart = $_SESSION ['cart'];
for($i = 0; $i < count($cart); $i++){
$productid = $cart[$i]->productid;
$productnaam = $cart[$i]->productnaam;
$productomschrijving = $cart[$i]->productomschrijving;
$productprijs_incl = $cart[$i]->productprijs_incl;
$product_btw_tarief = $cart[$i]->product_btw_tarief;
$subtotaalexcl = $cart[$i]->productprijs_excl * $cart[$i]->quantity;
$subtotaal = $cart[$i]->productprijs_incl * $cart[$i]->quantity;
$aantal = $cart[$i]->quantity;
$lesuren = $cart [$i]->lesuren * $cart[$i]->quantity;
$insert_stmt->execute();
}// End for loop
$insert_stmt->close();
РЕДАКТИРОВАТЬ
$cart = unserialize (serialize ($_SESSION ['cart']));
отредактировано в:
$cart = $_SESSION ['cart'];
@ Ник.Привязка перемещается за пределы цикла сразу после оператора prepare.