php - 如何将 mysql 连接结果包含到 PHP 多维数组中

标签 php mysql arrays multidimensional-array

我有两个名为“Accounts”和“Images”的表。

图像将包含每个帐户的多个结果。

如何在单个数组中反射(reflect)与使用 mysql 和 php 的帐户关联的所有图像,所有图像均以逗号分隔?

我不确定要使用哪个连接...

这是我期望的最终结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [firstName] => "John"
            [lastName] => "Doe"
            [images] => "image1.jpg,image2.jpg,image3.jpg"
        )

)

这是我目前得到的:

Array
(
    [0] => Array
        (
            [id] => 1
            [firstName] => "John"
            [lastName] => "Doe"
            [filename] => "image1.jpg"
        )

)

这是迄今为止我的代码:

$sql = SELECT a.firstName,a.lastName,i.fileName FROM accounts a INNER JOIN images i ON a.id = i.accountID;

$result = mysqli_query($con,$sql);

while($row = mysqli_fetch_assoc($result)){
        $accounts[] = $row;
}

print_r($accounts);

如果有比使用上面的代码更好的开始方式,我愿意接受所有建议。

最佳答案

您可以使用单个 SQL 查询和 GROUP_CONCAT 函数来完成所需的输出。

以下命令将查找所有帐户(包含和不包含图像)以及以逗号分隔的图像文件名列表。

如果您只想查找带有图像的帐户,请将 LEFT JOIN 更改为 INNER JOIN

SELECT a.id, a.firstName, a.lastName, GROUP_CONCAT(i.fileName SEPARATOR ',') AS images
FROM accounts a
LEFT JOIN images i ON (a.id = i.accountID)
GROUP BY a.id

关于php - 如何将 mysql 连接结果包含到 PHP 多维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169760/

相关文章:

php - 通过队列 Laravel 发送原始邮件

MySQL:复合索引与多个索引(最左边的索引前缀)

mysql - SQL 错误 (1231) : Variable 'optimizer_switch' can't be set to the value of 'derived_merge=OFF'

java - 如何在Java中根据两列的值对二维数组进行排序

python - 需要创建一个新的 Python 列表,其中包含另一个列表的所有可能的唯一组合

php - 下拉浮点值不显示选项作为选择

PHP文件不会复制

php: sql-query - 避免错误

mysql:获取两个日期时间之间的记录数

c - 将数组传递给已扫描的函数