我正在使用 PHP 为自己编写一个电影存档脚本。我正在从 IMDb 获取电影信息并将其添加到我的数据库中。我正在使用另一个名为“链接”的表添加我选择的电影的链接。
这是我用来从数据库获取电影的查询:
$movies = $this->db->query("SELECT *
FROM movies
ORDER BY ".$order['by']." ".$order['type']."
LIMIT ".$limit.", " . $this->config->item('moviePerPage')
);
我将其提取到视图文件中,如下所示:
foreach ($movies->result() as $row) {
echo $row->name;
}
现在,必须为每部电影显示具有匹配 ID 的链接(电影可以有多个链接)。我的链接表有这些列:“id”、“movieid”、“name”、“link”
如何使用单个 MySQL 查询获取每部电影的链接?是否可以获取与当前 $row 电影相关的所有链接并将它们绑定到单个变量作为数组?有了这个,我可以使用 foreach() 循环它并显示每部电影的链接。
顺便说一句:movies.movieid 和 links.movieid 列具有相同的数据。
我认为你需要 mysql 的组连接 http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_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);
}
Updates我认为这是获得结果的唯一方法,而无需为具有多个链接的单个电影提供多个结果行。
请注意结果中可以获取的最大字符长度 - 默认情况下为 1024 个字符。读这个Mysql group_concat_max_length mysql group_concat_max_length http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_group_concat_max_len and 组连接最大长度 https://stackoverflow.com/questions/1278184/in-mysql-is-it-possible-to-get-more-than-1024-characters-back-from-group-concat了解如何超越限制。
正如 Dan Grossman 指出的那样,如果您认为链接可能包含逗号,请使用不同或不常见的分隔符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)