gpt4 book ai didi

php - 将每一行的行连接为来自另一个表的数组

转载 作者:行者123 更新时间:2023-11-29 02:06:59 24 4
gpt4 key购买 nike

我正在使用 PHP 为自己使用 codeigniter 编写电影存档脚本。我正在从 IMDb 获取电影信息并将它们添加到我的数据库中。我正在使用另一个名为 links 的表为我选择的电影添加链接。

这是我用来从数据库中获取电影的查询:

    $movies = $this->db->query("SELECT *
FROM movies
ORDER BY ".$order['by']." ".$order['type']."
LIMIT ".$limit.", " . $this->config->item('moviePerPage')
);

我正在像这样在 View 文件中获取它:

foreach ($movies->result() as $row) {
echo $row->name;
}

现在必须为具有匹配 ID 的每一部电影显示链接(电影可以有多个链接)。我的链接表包含以下列:'id'、'movieid'、'name'、'link'

如何使用单个 MySQL 查询获取每部电影的链接?是否可以获取与当前 $row 电影相关的所有链接并将它们绑定(bind)到单个变量作为数组?有了这个,我可以用 foreach() 循环它并显示每部电影的链接。

顺便说一句:movies.movi​​eid 和 links.movi​​eid 列具有相同的数据。

最佳答案

我想你需要 mysql 的 GROUP_CONCAT

做这样的事情:-

SELECT 
movies.*,
group_concat(links.link ', ') as links
FROM movies
LEFT JOIN links
ON links.movieid = movies.movieid
GROUP BY movies.movieid

您将获得每部电影的逗号分隔链接列表。你可以像这样提取:-

foreach ($movies->result() as $row) {
$linksArray = explode(",",$row->links);
}

更新 我认为这是获得结果的唯一方法,而无需为具有多个链接的单个电影设置多个结果行。

请注意您可以在结果中获得的最大字符长度 - 默认为 1024 个字符。读这个 Mysql group_concat_max_lengthGroup concat max length了解如何超越限制。

就像 Dan Grossman 指出的那样,如果您觉得链接可能包含逗号,请使用不同的或不常见的分隔符。

关于php - 将每一行的行连接为来自另一个表的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com