MySQL выбирает 20 000 строк

У меня есть база данных для работы, где хранятся статьи. К сожалению и по какой-то причине, они сохранили информацию об изображении в 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;
}

?>

2

Решение

Вы пытаетесь загрузить все 20 000 изображений в память.

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

Попробуйте вместо этого просмотреть набор результатов.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]