0

我已经搜索并找到了类似的问题和答案,但我无法让它发挥作用。

我有两张桌子:

播放列表 (id、name 和 song_id)

歌曲(ID,名称)

我的 php 文件地址如下:http://example.com/?playlist=30 我想$_GET['playlist']从该特定播放列表中获取并选择所有歌曲。

喜欢: $result = mysql_query("SELECT * FROM playlist WHERE id=$_GET['playlist']"); 并且从那个结果中我想选择歌曲,

像:$result = mysql_query("SELECT * FROM songs WHERE playlist.song_id = songs.song_id");

4

3 回答 3

0

您可以在一个查询中将这些表连接在一起

SELECT *
FROM   playlist JOIN songs ON songs.id = playlist.song_id
WHERE  playlist.id = ?

请不要$_GET直接在 SQL 中使用变量 - 这会使您容易受到 SQL 注入攻击。您确实应该使用准备好的语句,将变量作为参数传递到其中,而不会针对 SQL 进行评估。如果您不知道我在说什么或如何解决它,请阅读Bobby Tables的故事。

另外,请停止使用古老的 MySQL 扩展编写新代码:它不再维护,社区已开始弃用过程。相反,您应该使用改进的MySQLi扩展或PDO抽象层。

于 2012-05-31T09:09:53.627 回答
0

你试过这样

mysql_query("SELECT * FROM songs WHERE song_id IN(SELECT song_id FROM playlist WHERE id=$_GET['playlist']);

如果您的播放列表表有 song_id 列

于 2012-05-31T09:09:56.547 回答
0
   $result = mysql_query("SELECT s.id,s.name,p.id,p.name FROM songs s inner join playlist p on s.id=p.song_id where p.id=$_GET['playlist']");
于 2012-05-31T09:10:29.720 回答