我正在为用户上传的帖子创建一个帖子页面,该帖子将显示用户上传的图片及其书面信息。
我的具体问题是如何链接与该帖子相关联的特定图片ID,以便只显示属于帖子的那些图片而不是文件夹中的所有图片?我需要将所有img_id
链接到每个帖子的post_id
。
因此,如果帖子中post_id
为“1”的帖子与img_id
1到4相关联,而后续img_id
属于其他post_id
} s,我想只显示那些img_id
这是我当前的HTML / PHP,用于在post.php页面上显示图像:
<?php
$files=scandir("admin/images");
?>
<div class="carousel-inner">
<?php
$i = 0;
for ($a = 2; $a < count($files); $a++):
?>
<div class="item <?php echo $i == 0 ? 'active': ''; ?>" align="center">
<img src="admin/images/<?php echo $files[$a];?>">
</div>
<?php
$i++;
endfor;
?>
</div>
我试过更换
<img src="admin/images/<?php echo $files[$a];?>">
与
<?php
$imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id' ";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
while ($imrow = $q2->fetch_object());
echo "<img src='admin/images/".$row->img_id."' width='100%' height='100%' >";
}
?>
但我一直得到 Undefined属性:stdClass :: $ img_id 错误。
这是我的images
表格供参考,以防万一有人想看看它:
CREATE TABLE `images` (
`image_id` int(11) NOT NULL,
`post_id` int(11) NOT NULL,
`img_path` varchar(500) NOT NULL,
`img_type` varchar(500) NOT NULL,
`img_name` varchar(500) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
答案 0 :(得分:4)
首先,摆脱这一行中的分号:
while ($imrow = $q2->fetch_object()); // <<<
它结束了声明,死于其轨道并且无法引用下一行上回显的数据。
mysqli_error($db)
。你也在这里使用两个不同的变量
while ($imrow
,然后再使用$row->img_id
;他们需要匹配。
使用PHP的错误报告来捕获这样的错误:
附注:请记住为要添加到}
循环的左大括号{
添加额外的结束while
大括号。
修改/荣誉:强>
在发现Lawrence时(在评论中),您错过了查询中的img_id
。但是,您需要使用image_id
作为参考。
脚注:
使用准备好的声明,保护自己免受SQL injection的攻击。</ p>