我这里有一个 PHP 公告板,可以发布评论和图像。我能够将我的评论和图像存储到数据库中。我的问题涉及 2 个 SQL 表,一个用于存储帖子,另一个用于存储图像。当我回显我的帖子表格时,我想回显帖子正文内的相应图像。我已将表设置为与 DATETIME 的列属性匹配,但当我与 posts 表处于 foreach 循环时,我无法理解如何访问图像表。我已经包含了我的index.php 文件和我的getImage.php 文件的代码。我们将不胜感激。
我对 $ID = $_GET['id']; 中的 getImage 文件进行了更新其中“id”需要小写。我现在的表格中显示了一些图像,但有些只是部分图像。我想我已经在路上了。我知道我需要一个 if 语句来确定显示之前帖子中是否有图像。感谢您的所有帮助。
<?php
include('connect.php');
$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>reply</td><td>".
$post['post_title'] . "</td ><td>". $post['post_body'] . "<img
src='getImage.php?id=".$post['ID']."'>". "</td><td>".
$post['DATETIME']. "</td><td>". $post['replyIndex']. "</td>
<td>".$post['post_type']."</td>";
?>
<?php
include('connect.php');
$ID = $_GET['id'];
$query = "SELECT * FROM PostImages WHERE ID=:ID";
$statement = $db->prepare($query);
$statement->bindvalue(':ID', $ID);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);
header("Content-type: image/jpeg");
echo $row['image'];
?>
最佳答案
您可能希望在 SELECT
查询中使用 JOIN
语法。类似于:
$query = 'SELECT * FROM forumPosts LEFT JOIN postImages ON forumPosts.DATETIME = postImages.imageDATETIME ORDER BYreplyIndex ASC'
然后,您可以使用 $post['name']
和 $post['image']
从 foreach 循环中获取图像数据。
即使第二个表 (postImages
) 上没有匹配项,LEFT JOIN
仍将返回第一个表 (forumPosts
) 中的所有行>).
关于php - 在我的 PHP 留言板中,如何输出与相应帖子相对应的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47842013/