php - MySQL 选择 20.000 行

标签 php mysql rows multiple-columns

我有一个数据库可以用来保存文章。不幸的是,无论出于什么原因,他们将图片信息以 BLOB 形式存储在数据库中。现在我需要创建包含图片数据的文件夹 - 这工作正常,但是当我尝试选择更多数据时,脚本失败或遇到错误(返回 false)。你能帮我查询 16.000-20.000 行并将其提取到文件中吗?

这是我的代码

    <?php

$dbuser = 'user';
$dbpass = 'pass';

try {
    $db = $dbh = new PDO('mysql:host=localhost;dbname=Tventas', $dbuser, $dbpass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::NULL_EMPTY_STRING);
}

catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\
";
}
try {

    $sql="SELECT id_imagen, imagen FROM imagen900";
    //$stmt = $db->prepare($sql);
    //$stmt->execute();
    //$products = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($db->query($sql) as $row){

    $filename = $row['id_imagen'].".jpg";

        if (!empty($row['imagen'])) {
        $blob=$row['imagen'];

            if (file_exists($filename)){
                echo "<pre>Datei bereits vorhanden: ";
                print_r($filename);
                echo "</pre>";
            }
            else
            {
                file_put_contents($filename,$blob);
                echo "<pre>";
                print_r($filename);
                echo "</pre>";
            }
        }
    }
}

catch (PDOException $e) {
    echo"Whoops! Something went wrong!";
    echo" Query with error: ".$sql;
    echo" Reason given:".$e->getMessage()."\
";
    return false;
}

?>

最佳答案

您正在尝试将所有 20 000 张图像加载到内存中。

$products = $stmt->fetchAll(PDO::FETCH_ASSOC);

尝试循环遍历结果集。

$sql = "SELECT id_imagen, imagen FROM imagen900";
foreach ($db->query($sql) as $row) {
  ...
}

关于php - MySQL 选择 20.000 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427165/

相关文章:

php - 我们如何在 mysql 中使用 JOIN 设置计数

mysql - 获取文件名记录

PHP/SQL - 显示每个查询的特定行数

javascript - 使用 JavaScript 循环数据以创建包含键/值对的字典

php - 请求的资源上存在 Phonegap No 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'

php - 直播音频流有效 HTTP 资源

php - oneup flysystem和liip想象一下本地缓存设置

php - 堆栈与排队?

php - "On delete cascade"三张表。错误无法添加或更新子行

python - 根据列对某些行赋予权重