我在这里有一个PHP公告板,能够发表评论和图像。我能够将我的评论和图像存储到数据库中。我的问题涉及我的两个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'];
?>
您可能希望在JOIN
查询中使用SELECT
语法。就像是:
$query = 'SELECT * FROM forumPosts LEFT JOIN postImages ON forumPosts.DATETIME = postImages.imageDATETIME ORDER BY replyIndex ASC'
然后,您可以使用$post['name']
和$post['image']
从foreach循环获取图像数据。
即使第二张桌子上没有匹配(LEFT JOIN
),forumPosts
仍会返回第一张桌子(postImages
)中的所有行。