【发布时间】:2013-08-06 08:50:10
【问题描述】:
我正在开发一个带有图片库的网站。我想在一个页面上列出所有图像。所以我写了下面的脚本。
try{
$dsn = 'mysql:host=localhost;dbname=testdatabase';
$conn = new PDO($dsn, 'user', 'xxxx');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$gallery_select_stmt = $conn->prepare("SELECT image_id FROM images ORDER BY image_id ASC");
$gallery_select_stmt->execute();
while ($row = $gallery_select_stmt->fetch(PDO::FETCH_ASSOC)) {
foreach ($row as $key => $value) {
echo '<div class="imageBox">';
echo '<a href="photo.php?id='.$value.'"><img src="image.php?id='.$value.'&thumb=1"/></a>';
echo '</div>';
}
}
} catch(Exception $ex){
error_log("Issue processing the gallery: ".$ex);
}
我正在使用 6 张图片测试该网站!但是第一张图片没有显示。我用谷歌搜索了这个问题,在 stackoverflow 中也发现了一些类似的问题。但是他们都没有帮助我!
我遇到的主要问题是当我执行上述代码替换
echo '<a href="photo.php?id='.$value.'"><img src="image.php?id='.$value.'&thumb=1"/></a>';
与这样的东西分开
echo '<img src="images/'.$value.'"/></a>';
代码完美运行。显示所有 6 个结果。
我必须承认这些图像中的大多数都非常大(在 4 - 12 MB 之间变化,但会显示更大的图像)。这是内存问题吗?
【问题讨论】:
-
当图像不显示时,浏览器开发控制台中的网络选项卡会显示什么?
-
你的 HTML 源标签在生成的 HTML 上显示了什么?
-
请注意,您不需要使用
foreach来迭代$row,因为它只包含一个可以通过$row['image_id']获取的值 -
什么意思-“不显示”-是数据库没有返回第一个id,还是
-
您可能收到超过内存限制的 500 内部错误或致命错误。这就是为什么您收到纯文本错误消息而不是图像的原因。最重要的是,您不应该动态地从大图像中生成拇指,而应该预先生成它们。
标签: php mysql image memory pdo