我有一个数据库可以用来保存文章。不幸的是,无论出于什么原因,他们将图片信息以 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/