MYSQLI INSERT MULTIPLE ROWS
这是我的第一篇文章,希望有人能帮我解决我遇到的这个问题。
我试图从购物车表中获取物品,并将每行插入到订单表中。 他们提交订单后,应该执行该操作。 这是我的代码。
if(isset($_GET['submitOrder'])) {
$timedate = $currentTime." at ".$currentDate;
$order_number = rand(10,100);
$cartOrder=$mysqli->query("SELECT * FROM cart WHERE members_id='".$members_id."'");
$cartOrder_total = $cartOrder->num_rows;
while($row=mysqli_fetch_assoc($cartOrder)) {
$stmt = $mysqli->prepare("INSERT INTO orders(order_number, members_id, product_id, quantity, date_submitted) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param('siiis', $order_number, $members_id, $row['product_id'], $row['quantity'], $timedate);
$stmt->execute();
$stmt->close();
}
header('Location: cart.php#orderplaced');
}
我的问题是它只在订单表中插入一个条目。 即使购物车中有4件商品,它仍然只能进入其中。
如果有人能指出我正确的方向,我会很感激! 它现在只进入一行,我不知道为什么。
这是我的表格:
CREATE TABLE IF NOT EXISTS
(
cart_id int(11) NOT NULL AUTO_INCREMENT,
product_id int(11) NOT NULL,
members_id int(11) NOT NULL,
数量int(11) NOT NULL,
date_added varchar(255) NOT NULL,
date_submitted varchar(250) NOT NULL, PRIMARY KEY (
cart_id ), KEY
cart_id (
cart_id`))ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 153;
CREATE TABLE IF NOT EXISTS orders
( order_id
INT(11)NOT NULL AUTO_INCREMENT, order_number
INT(11)NOT NULL, members_id
INT(11)NOT NULL, product_id
INT(11)NOT NULL, quantity
INT(11)NOT NULL, date_submitted
VARCHAR (256)NOT NULL,PRIMARY KEY( order_id
),UNIQUE KEY order_number
( order_number
))ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 422;`
没有看到数据库模式我不能确定,但我怀疑这是与你在while
循环内使用for
循环。 这将尝试执行完全相同的INSERT
,其值完全相同$cartOrder_total
次。
只需删除for
循环,留下以下内容:
while($row=mysqli_fetch_assoc($cartOrder)) {
$stmt = $mysqli->prepare("INSERT INTO orders(order_number, members_id, product_id, quantity, date_submitted) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param('siiis', $order_number, $members_id, $row['product_id'], $row['quantity'], $timedate);
$stmt->execute();
$stmt->close();
}
您看到的哪一行是通过INSERT
到达的,这是您的迭代问题的线索。 或者,您可以添加ECHO
并只查看您正在移动的数据。
如果您只看到提交的第一行数据,那么您就不会迭代外循环的数据。
如果您只看到提交的最后一行数据,那么这是您跳到外部数据的最后一行而不是遍历每一行的线索。
链接地址: http://www.djcxy.com/p/59695.html