在我的PHP留言板中,如何输出与相应帖子对应的图像?

在我的PHP留言板中,如何输出与相应帖子对应的图像?,php,mysql,image,Php,Mysql,Image,我这里有一个PHP公告板,可以发布评论和图片。我能够将我的评论和图像存储到数据库中。我的问题涉及我的两个SQL表,一个用于存储文章,另一个用于存储图像。当我回显我的帖子表时,我想回显帖子正文中相应的图像。我已经将我的表设置为与DATETIME的column属性相匹配,但是当我与posts表处于foreach循环中时,我无法理解如何访问images表。我已经包含了index.php文件和getImage.php文件的代码。非常感谢您的帮助 我在$ID=$\u GET['ID']中更新了我的getI

我这里有一个PHP公告板,可以发布评论和图片。我能够将我的评论和图像存储到数据库中。我的问题涉及我的两个SQL表,一个用于存储文章,另一个用于存储图像。当我回显我的帖子表时,我想回显帖子正文中相应的图像。我已经将我的表设置为与DATETIME的column属性相匹配,但是当我与posts表处于foreach循环中时,我无法理解如何访问images表。我已经包含了index.php文件和getImage.php文件的代码。非常感谢您的帮助

我在$ID=$\u 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 BY replyIndex ASC'

然后可以使用
$post['name']
$post['image']
从foreach循环中获取图像数据

即使第二个表(
postImages
)上没有匹配项,
LEFT JOIN
仍将返回第一个表(
forumPosts
)中的所有行


不要发布数据库的图片。这很难读。取而代之的是,使用结构表来显示表模式是不清楚的,我认为这是不完整的。无法立即理解将要执行的操作。您的查询只选择forumPosts表,因此不会从postImages表返回任何内容。通过使用JOIN,您可以从两个表中选择all,并在两个表的日期时间匹配的地方将它们连接在一起。结果将是一个单独的表,其中两个表的完整数据将正确连接。因此,您可以使用与获取forumPosts数据相同的方式获取postImages数据:
$post['name']
$post['image']
我理解。是否只显示匹配的行?对不起我的无知。我们在学校学习连接,但我从未实现过。通过使用
左连接
,第一个表中的所有行都将返回,即使第二个表中没有匹配的行。我更新了查询以执行左连接,它应该通过post['image']回显图像,但不是。我已经包括了上面的屏幕抓图。我的查询显示紫色文本,我通常认为这意味着糟糕。也许有人能告诉我哪里出错了。谢谢