我目前正在开发一个媒体播放列表网站,两个单独的音频和视频页面。
这是播放列表.php它使用javascript动态加载到页面中:
$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
在上面的代码中,将播放列表id与媒体ID进行比较,以了解播放列表中有哪些歌曲。媒体类型是确定视频/音乐。路径是媒体文件位置。
现在我的媒体信息数组工作得很好,除了它显示第一个匹配的 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 两次,以及我该如何修复它
感谢所有帮助!谢谢
这是因为你在循环中有print_r($playlist);
。如果您有 3 个播放列表,它将显示 3 个数组(1、1+2、1+2+3)。
将其移到外面:
while($playlistlist = $result->fetch_row()) {
$playlist[]= $playlistlist;
}
print_r($playlist);
或者更好的是,将其移出foreach($rows as $row) { .. }
循环