php - 使用 PHP 将数组中的值插入 mysql

标签 php mysql arrays mysqli

我对此有些挣扎。希望有人可以指导我一点。

我正在尝试获取 mysql 中的购物车篮产品(在本例中不是 session ),并将它们移至结帐时的“订单详细信息”表。

产品数组已正确创建并正确输出键和值,但我的问题是当我尝试将数组值插入另一个表时。

这是代码:

$cart_products = array(); 
$stmt = $conn->prepare("SELECT 
SUM(co.cart_quantity) AS quantity, 
p.product_id, 
p.product_name, 
SUM(p.product_price) AS price, 
p.short_description, 
SUM(p.product_weight) AS weight, 
p.vat 

FROM cart_orders AS co 
LEFT JOIN products AS p 
ON co.cart_product_id = p.product_id 
LEFT JOIN vat_rates AS vr 
ON p.vat = vr.vat_id 
WHERE cart_user_id = ? 
GROUP BY co.cart_product_id 
ORDER BY co.cart_product_id"); 


$stmt->bind_param('i', $user_id); 
$stmt->bind_result($quantity,$p_product_id,$p_product_name,$price,$p_short_description,$weight,$p_vat); 
$stmt->execute(); 
$stmt->store_result(); 
if($stmt->num_rows() > 0){ 
while ($stmt->fetch()) { 

$cart_products[] = array( 
    "product_id" => $p_product_id, 
    "product_name" => $p_product_name, 
    "product_quantity" => $quantity, 
    "product_price" => $price, 
    "vat_id" => $p_vat 
); 
}} 
$stmt->free_result(); 
$stmt->close(); 


$stmt = $conn->prepare("INSERT INTO order_details(product_id,product_name,product_quantity,product_price,vat_id)
VALUES (?,?,?,?,?)");
$stmt->bind_param('isiii', $cart_products['product_id'],$cart_products['product_name'],$cart_products['product_quantity'],$cart_products['product_price'],$cart_products['vat_id']);
$stmt->execute();
$stmt->close();  

这是我的数组 $cart_products 的输出:

Array 
( 
    [0] => Array 
        ( 
            [product_id] => 5 
            [product_name] => Product A 
            [product_quantity] => 20 
            [product_price] => 2.50 
            [vat_id] => 2 
        ) 

    [1] => Array 
        ( 
            [product_id] => 7 
            [product_name] => Product A 
            [product_quantity] => 10 
            [product_price] => 2.50 
            [vat_id] => 1 
        ) 

    [2] => Array 
        ( 
            [product_id] => 9 
            [product_name] => Product A44544 
            [product_quantity] => 3 
            [product_price] => 2.50 
            [vat_id] => 2 
        ) 

)  

预先感谢您的帮助!

最佳答案

您必须迭代 $cart_products 才能访问每个产品。

$cart_products = array();
if ($stmt->num_rows() > 0) {
    while ($stmt->fetch()) {
        $cart_products[] = array(
            "product_id" => $p_product_id,
            "product_name" => $p_product_name,
            "product_quantity" => $quantity,
            "product_price" => $price,
            "vat_id" => $p_vat
        );
    }
}
$stmt->free_result();
$stmt->close();


$stmt = $conn->prepare("INSERT INTO order_details(product_id,product_name,product_quantity,product_price,vat_id)
VALUES (?,?,?,?,?)");

foreach ($cart_products as $cart_product) {
    $stmt->bind_param('isiii', $cart_product['product_id'], $cart_product['product_name'], $cart_product['product_quantity'], $cart_product['product_price'], $cart_product['vat_id']);
    $stmt->execute();
}

关于php - 使用 PHP 将数组中的值插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280432/

相关文章:

php - 如何将 noindex 元标记添加到错误报告页面。

php - PDO 和 SQL 创建临时表的一般错误

mysql - 如何获取去年的日期范围?

c++ - 是否可以在没有循环的情况下将数组元素与硬编码的初始值设定项列表进行比较?

php - 正则表达式检测不在 {} 之间的所有内容,然后从匹配的内容中搜索

php - 如何防止 PHP 使用 .htaccess 进行缓存

php - 强制文件到 'save as' 浏览器窗口

mysql - MySQL 的 INTERVAL 和 UTC_TIMESTAMP 的 sqlite 等价物是什么?

php - 从数据库创建数组

ios - 设置永久数组元素