0

我不确定在尝试了几个小时之后这是否可能,但是这里......

我有一个类,UserPicture,它具有文件名、文件类型、创建等属性(即它不将实际图片存储为blob,而是通过使用$filename.$filetype 来引用它)。

我希望能够拥有一个显示所有用户图片的页面,因此我需要从数据库中检索与该用户相关的所有行。我已经成功地将关联数组从数据库中取出,并使用以下代码创建了对象,该对象的工作原理是通过回显它来测试它的输出......

$result=query("SELECT * FROM pictures WHERE user_id=$user_id");
// Returns associative array with numerous succesfully.
$pictures = array();
foreach($result as $row) {
    $pictures = new UserPicture($row);
}

这有点工作,但我只得到最后一行作为数组中的一个对象。所以我尝试了array_push ...

foreach($result as $row) {
   array_push($pictures, new UserPicture($row));
}

...并且我尝试使用 $pictures[]=new UserPicture($row),但两者都只给我以下错误...

可捕获的致命错误:无法将 UserPicture 类的对象转换为第 72 行 user_picture_manage.php 中的字符串

如果有人可以请阐明我做错了什么,这将非常有帮助!

非常感谢,史蒂夫

4

1 回答 1

4

您正在覆盖$pictures上面代码中的变量。您需要为每一行添加一个新键。以下应该可以解决问题:

$result=query("SELECT * FROM pictures WHERE user_id=$user_id");
// Returns associative array with numerous succesfully.
$pictures = array();
foreach($result as $row) {
    $pictures[] = new UserPicture($row);
}

注意我在哪里添加了方括号 ( [])。对于循环中的每次迭代,foreach都会将一个新键添加到$pictures包含新UserPicture类作为值的数组中。

然后,您应该能够$pictures按如下方式迭代您的新数组:

foreach ($pictures as $picture) {
    $src = $picture->filename . "." . $picture->filetype;
    echo '<img src="<?php echo $src; ?>" alt="" />';
}
于 2010-10-12T11:03:27.033 回答