【发布时间】:2014-11-19 02:01:43
【问题描述】:
我目前正在开发一个媒体播放列表网站,有两个独立的音频和视频页面。
这是使用 javascript 动态加载到页面中的 playlist.php:
$sql = new mysqli('localhost', 'root', '', 'bunnytwitchy');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit;
}
$query = "SELECT * FROM `playlist` WHERE `playlistname`='playlist 1'";
$result = $sql->query($query);
if (!$result) {
printf("Query failed: %s\n", $mysqli->error);
exit;
}
while($row = $result->fetch_row()) {
$rows[]=$row;
}
foreach($rows as $row) {
$mediaid = $row[1];
$query = "SELECT * FROM `media` WHERE `id`='$mediaid'";
$result = $sql->query($query);
if (!$result) {
printf("Query failed: %s\n", $mysqli->error);
exit;
}
while($playlistlist = $result->fetch_row()) {
$playlist[]= $playlistlist;
print_r($playlist);
}
}
之所以从两个表中选择 *,是因为我同时从播放列表表和媒体表中收集信息。
在获取两个表信息时,我尝试将播放列表歌曲 ID 与媒体 ID 进行比较,以便知道播放列表中包含哪些歌曲和信息。
我的数据库结构是:
db: bunnytwitchy
tables: playlist, media
playlist: playlistid, mediaid, playlistname
media: id, type, band, song, album, path
在上面的代码中,playlistid 与媒体 id 进行比较,以了解播放列表中有哪些歌曲。媒体类型是确定视频/音乐。 Path 是媒体文件的位置。
现在我的媒体信息数组运行良好,除了显示第一个匹配的 id 两次:
Array
(
[0] => Array
(
[0] => 3
[1] => video
[2] => band2
[3] => song2
[4] => album1
[5] => video/3.mp4
)
)
Array
(
[0] => Array
(
[0] => 3
[1] => video
[2] => band2
[3] => song2
[4] => album1
[5] => video/3.mp4
)
[1] => Array
(
[0] => 1
[1] => video
[2] => bandname
[3] => songname
[4] => album
[5] => video/2.mp4
)
)
id 2 丢失的原因是它是音乐文件而不是视频。
我希望有人可以帮助我弄清楚为什么它会在数组中显示第一个匹配的 id 两次,以及如何修复它
感谢所有帮助!谢谢
【问题讨论】: