我有一个数据库可以处理保存文章的位置。不幸的是,无论出于何种原因,他们将图片信息存储在数据库中的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;
}
?>
答案 0 :(得分:3)
您正尝试将所有2万张图像加载到内存中。
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
尝试循环遍历结果集。
$sql = "SELECT id_imagen, imagen FROM imagen900";
foreach ($db->query($sql) as $row) {
...
}