Php mysql结果按数组排序
我想我不明白“排序”是如何工作的,所以请不要评判我。我真的找了一整天 我有一张有演员栏的电影桌。一个名为“演员”的专栏。参与者是由空格“”分隔的链接。链接的顺序非常重要 我将链接分解成一个数组,看起来像[0]->link0,[1]->link1 我有演员表,每个演员都有自己的电影链接。我不想进行20次不同的sql搜索,所以我用我想要的所有链接创建了一个变量,如下所示(其中Php mysql结果按数组排序,php,mysql,sorting,Php,Mysql,Sorting,我想我不明白“排序”是如何工作的,所以请不要评判我。我真的找了一整天 我有一张有演员栏的电影桌。一个名为“演员”的专栏。参与者是由空格“”分隔的链接。链接的顺序非常重要 我将链接分解成一个数组,看起来像[0]->link0,[1]->link1 我有演员表,每个演员都有自己的电影链接。我不想进行20次不同的sql搜索,所以我用我想要的所有链接创建了一个变量,如下所示(其中actor\u-link=link1或actor\u-link=link2或..) 问题是这个。搜索可能会首先找到link7,
actor\u-link
=link1或actor\u-link
=link2或..)
问题是这个。搜索可能会首先找到link7,所以我的排序就不见了。我能做些什么来保持电影表中的顺序。我想按电影中的人气显示演员,而不是按数据库的顺序
你能给我另一种方法来搜索演员而不进行'x'sql搜索,并且仍然保持秩序吗
$actors[] = explode(" ", $row['actors_link']);
$x=0;
$actors2 = '';
while ($actors[0][$x]) {
$actors2 = $actors2 . "`link_imdb_actor` = " . "'".$actors[0][$x]."' OR ";
$x++;
}
$actors2 = substr($actors2, 0, -3);
$sql = "SELECT * FROM `actors` WHERE $actors2";
$sql_result = mysql_query($sql) or die(" ");
while ($row3 = mysql_fetch_array($sql_result)) {
echo $row3['link_imdb_actor'];
}
因此,电影《特兰西瓦尼亚酒店》有亚当·桑德勒、安迪·桑伯格和赛琳娜·戈麦斯。我的搜索结果是赛琳娜·戈麦斯、安迪·桑伯格、亚当·桑德勒,因为这是我数据库中的订单。如何按照actors数组的顺序对sql结果进行排序?谢谢大家! 我需要您现有的代码来真正了解正在发生的事情的要点 我将在你的提问中提出一个建议。不要说actor\u link=a或actor\u link=b或actor\u link=c,而是这样做:
WHERE actor_link IN (link1, link2, link3)
为了扩展Arjan的评论,如果您希望能够实际使用actor数据(例如,使用它进行搜索),我建议至少再添加两个表。其中一个使用actorID、firstName和lastName字段调用actors。另一个表是castingID、actorID、movieID和castingOrder字段的casts 然后,每个castingID都会将一个演员链接到一部电影——这将使搜索某个演员看过的每部电影或某个电影中的每一个演员变得很容易
castingOrder字段可用于维护您想要的订单。您必须给我们一些代码查看,这非常令人困惑您的数据库设置错误。如果您希望能够查询内容,则不应在一列中放置多个项目。Arjan,如果您有30万个电影标题和50万名演员,您可以想象当1000个用户查询数据库时,您的服务器将如何工作?SQL数据库中结果集的顺序是,不可预测,除非您的查询包含适当的
ORDER BY
命令。您需要某种类型的列来指示演员优先级。@acerluc:当这些表具有适当的索引,并且您使用耦合表来链接演员和电影时,数据库应该相对容易,您将能够在一个简单的查询中检索单个电影的所有演员或单个演员的所有电影。您的空格分隔字符串解决方案需要两个查询和更复杂的php代码。您还需要复制数据,因为您需要为每部电影存储一个演员列表,并为每个演员存储一个电影列表。演员表似乎已经存在,因此只需要演员表。或者其他一些链接演员id和电影id的表。