<?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 的图像。当我以这种方式查询时,我收到两个错误。这些张贴在下面。
如果我在不检查长度的情况下进行查询,我会得到相同的错误。
如果这很重要,这个 php 正在我的 mac os x 上的笔记本电脑上运行。当数据库包含较少数量的图像时,相同的代码可以正常工作。这个错误的其他解释提到了大型结果集,但他们也提到了改变表格,我不相信我正在这样做。
该数据库在 1000 张图像中包含大约 440 兆。存储为 LONGBLOB 对象
警告:第 5 行 Get_All_Images_DB_BLUEHOST2.php 中的空行数据包正文
警告:mysqli::query(): (00000/0): 在第 5 行的 Get_All_Images_DB_BLUEHOST2.php 中
另一条信息,错误总是发生大约 109 - 120 秒。