<?php
// Make a MySQL Connection
$mysqli = new mysqli("server", "user","pass","database") or die(mysqli_error());
$result = $mysqli -> query("SELECT * FROM testimage WHERE OCTET_LENGTH( IMAGE ) >200000 ") or die(mysqli_error());
if($result){
// Cycle through results
while ($row = $result->fetch_assoc()) {
file_put_contents($row['ID'].'.png', $row['IMAGE']);
}
// Free result set
$result->close();
}
?>
テストデータベースにlongblobオブジェクトとして画像を直接保存していますが、200kを超えるすべての画像を取得しようとしています。この方法でクエリを実行すると、2つのエラーが発生します。これらは以下に掲載されています。
長さをチェックせずにクエリを実行すると、同じエラーが発生します。
このphpは、それが重要な場合、macosx上の私のラップトップで実行されています。データベースに含まれる画像の数が少ない場合、この同じコードは正常に機能しました。このエラーに関する他の説明では、大きな結果セットについて言及していますが、テーブルの変更についても言及していますが、これは私が行っているとは思わないことです。
データベースには、1000枚の画像に約440メガバイトが含まれています。LONGBLOBオブジェクトとして保存
警告:5行目のGet_All_Images_DB_BLUEHOST2.phpの行パケット本文が空です
警告:mysqli :: query():(00000/0):Get_All_Images_DB_BLUEHOST2.phpの5行目
もう1つの情報として、エラーは常に約109〜120秒で発生します。