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 ordersorder_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_numberorder_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

上一篇: MYSQLI INSERT MULTIPLE ROWS

下一篇: using limit and where clause to make pagination