从数据库中获取记录值并将其内爆

时间:2016-12-18 09:49:28

标签: php mysql arrays database associative-array

根据我之前的问题here,我可以使用implode将关联数组转换为单个字符串。现在,从购物车会话( $ _ SESSION ['cart'] )我想得到图书的图像名称(这是一个关联数组)并将其转换为单个字符串。这是我的代码:

foreach ($_SESSION['cart'] as $key=> $value) {
    $sql    = mysql_query("SELECT * FROM product WHERE product_name='$key'"); //take image name from table product with book_name=$key

    $images = array();
    while ($product_image= mysql_fetch_assoc($sql)) {
        $images[] = $product_image['book_image'];
    }

    echo implode(', ', $images);
}

我想从上面的代码中看到的是:

  

book1_image,book2_image,book3_image

但它又回到了这个:

  

book1_imagebook2_imagebook3_image

我认为我写的内爆方法不起作用。我不知道我的代码有什么问题。任何人都可以帮我一次吗?提前致谢

1 个答案:

答案 0 :(得分:0)

错误位于std::bad_alloc位置错误。

echo

您的一堆查询可以用以下查询替换:

// define images as empty array before you loop
$images = array();   

foreach ($_SESSION['cart'] as $key=> $value) {
    $sql    = mysql_query("SELECT * FROM product WHERE product_name='$key'"); //take image name from table product with book_name=$key

    while ($product_image= mysql_fetch_assoc($sql)) {
        $images[] = $product_image['book_image'];
    }
}

// echo after you check all items
echo implode(', ', $images);

最后但并非最不重要的是 - SELECT * FROM product WHERE product_name IN ('name1', 'name2', 'name3') 扩展程序必须避免,因为它已经从php中删除了。