MySQL选择20.000行

时间:2014-12-11 16:00:57

标签: 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;
}

?>

1 个答案:

答案 0 :(得分:3)

您正尝试将所有2万张图像加载到内存中。

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

尝试循环遍历结果集。

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