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

标签 php mysql arrays database associative-array

根据我之前的问题here ,我可以使用内爆将关联数组转换为单个字符串。现在,从购物车 session ($_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

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

最佳答案

错误发生在错误的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')

最后但并非最不重要的 - mysql 扩展必须避免,因为它已经从 php 中删除了。

关于php - 从数据库获取记录值并将其内爆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207194/

相关文章:

php - 在PHP中一遍又一遍打开MySQL连接有什么影响

MySQL在一个表中选择不同的记录并根据另一个表中的值对每个组进行计数

php - 带数组的 laravel groupby

python - 将数组中的元素转换为python中的 float

php/mysql 标签查询模式

php - Css 文件没有链接到 html/php 文件

php - 公共(public)文件夹访问 Controller 功能中的 typo3 php 文件

MySQL 缓存准备好的语句以提高性能

PHP服务器端帖子

Mongo $set order 语句的 PHP 语法