【问题标题】:Result missing when iterating through a resultset with PHP PDO & MySQL使用 PHP PDO 和 MySQL 遍历结果集时结果丢失
【发布时间】: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


【解决方案1】:

服务器中存在内存问题。当我重新启动 Apache 并重新运行脚本问题时解决了。 @NB的建议是正确的,图像太大而无法在数组中处理。

【讨论】:

    猜你喜欢
    • 2015-05-09
    • 2020-07-12
    • 2012-06-05
    • 2015-10-05
    • 1970-01-01
    • 2014-12-17
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多