我将音频存储在数据库中,我希望将其作为音频对象发布在留言板上。已经有一个SQL查询,我加入了PostImages和forumPosts,然后我在foreach循环中回显。我试图在foreach循环中启动第二个SQL查询以显示音频,但它不起作用。取消注释第二个查询时,我得到“未捕获的异常”' PDOException'消息' SQLSTATE [42000]'该错误发生在执行语句中。有关于在foreach循环中放置第二个查询的帖子:Run a second query inside a foreach loop?如果我的方法有误,我会喜欢建设性的想法。
之前在stackoverflow上的帖子解释说我需要base64_encode($statement->fetch(PDO::FETCH_COLUMN))
才能播放音频。我试图查找(PDO::FETCH_COLUMN)
,但无法清楚地了解它的作用或是否需要它或应该使用其他内容。该帖子位于:how to play mp3 audio stored im mysql blob using php
在下面的代码中,我回显了一个包含图像和音频的表格。我已经注释掉了第二个查询中不起作用的部分。我有if
个语句来确定是否应该发布图像或音频。我希望这很清楚。如有必要,我可以添加更多信息。请有人可以提供帮助。我的帖子尽可能完整,我在这方面做得非常努力!我只想弄清楚这个障碍。
$query = 'SELECT * FROM forumPosts LEFT JOIN PostImages ON
forumPosts.DATETIME = PostImages.ImageDATETIME ORDER BY replyIndex
ASC';
$statement = $db->prepare($query);
$statement->execute();
$posts = $statement->fetchAll();
$statement->closeCursor();
echo "<table>";
foreach ($posts as $post){
if ($post['post_type'] == "r"){
$post_id = $post['post_id'];
echo "<tr bgcolor='beige'><td>". $post['post_title'] ."</td >
<td>". $post['post_body'];
if (!empty($post['ID']) && ($post['type']== 'i')) {
echo "<img src='getImage.php?id=".$post['ID']."'>";
} elseif (!empty($post['ID']) && ($post['type']== 'm')) {
//$query2 = 'SELECT* FROM from forumPosts WHERE post_id
='.$post['post_id'];
//$statement2 = $db->prepare($query2);
//$statement2->execute();
echo '<div content="Content-Type: audio/mp3"><audio
controls="controls" preload="metadata" autoplay>
<source
src="data:audio/mp3;base64,'.base64_encode
($statement2->fetch(PDO::FETCH_COLUMN)).'"/>;</audio></div>';
}
答案 0 :(得分:0)
答案一直都在我脸上。因为我已经在包含已连接图像表的查询的foreach循环中,所以我不必再次查询。我已经有了检查过&#39; m&#39;对于mp3。我只需要通过$ posts [&#39; image&#39;]来回显出音频对象的控件,以便从我的数据库中获取音频。
data-bind