如何显示数据库中的每张照片



我想显示用户X添加的数据库中的所有照片。问题是它只显示第一个匹配。我在html中添加了一个foreach循环,但它显示了一个类似photo.jpg 的错误

警告:foreach((参数的类型必须是array|object,在C:中为null

<?php
class photo_display
{
private $database;
private $userData;
public function __construct($database)
{
$this->database = $database;
}
public function display()
{
$id = $_SESSION['id'];
$query = $this->database->connect()->prepare("SELECT photo FROM photo where user_id = :id");
$query->bindParam(':id',$id, PDO::PARAM_INT);
$query->execute();
if($query->rowcount())
{
$row = $query->fetch();
}
$this->userData = $row;
}
public function display_Photos(string $colName)
{
echo (isset($this->userData[$colName])) ? $this->userData[$colName] : '';
}
}
?>
<div class='container-fluid bg-dark' id='profil'>
<div class='row'>
<div class=" col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4 order-5 order-12 order-6 order-md-4">
<div class="row" id="margin">
<div class="col-xl-12 d-flex justify-content-center">
<?php foreach ($photo_display->display_Photos('photo') as $value){ echo var_dump($value); } ?>
<img src="<?php echo ($value) ;?>" alt="photo"/>
</div>
</div>
</div>

尝试使用return而不是echo,如果不是,则返回空数组[]

public function display_Photos(string $colName)
{
return (isset($this->userData[$colName])) ? $this->userData[$colName] : [];
}

同样正如其他人所建议的,您需要使用fetchAll来设置多行,而不仅仅是一行:

if($query->rowcount())
{
$row = $query->fetchAll();
}

链接:

  • 获取
  • fetchAll
  • 前臂

最新更新