我过去一小时都玩过以下脚本,无法弄清楚到底出了什么问题。
这是什么想法: - 基本上我有一个数据库,用于保存图像上的数据,我正在调用该数据(图像文件名),尝试将其放入数组中,然后传递给zip创建脚本。
以下是我所拥有的: -
$query_ImageCollect = "SELECT * FROM image_data WHERE image_dealerid='$dealer_id' AND imagename LIKE '$imageName'";
$ImageCollect = mysql_query($query_ImageCollect, $vwconn) or die(mysql_error());
$row_ImageCollect = mysql_fetch_assoc($ImageCollect);
$totalRows_ImageCollect = mysql_num_rows($ImageCollect);
$counter=0;
do{
$counter=$counter+1;
$ImageUrl=$row_ImageCollect['image_url'];
$getFileNames="../../images/$ImageUrl";
if($counter==1){
$getFiles="'$getFileNames'";
}else{
$getFiles="$getFiles, '$getFileNames'";
}
} while ($row_ImageCollect = mysql_fetch_assoc($ImageCollect));
$groupFiles=array("$getFiles");
$zipName="Pictures.zip";
$zip = new ZipArchive;
$zip->open($zipName, ZipArchive::CREATE);
foreach ($groupFilesas $file) {
$zip->addFile($file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: ' . filesize($zipName));
readfile($zipName);
我也尝试将结果直接解析为数组但它也失败了: -
$query_ImageCollect = ("SELECT image_url FROM image_data WHERE image_dealerid='$dealer_id' AND imagename LIKE '$imageName'") or die(mysql_error());
while( $row = mysql_fetch_assoc( $query_ImageCollect )){
$groupFiles[] = $row;
}
$zipName="Pictures.zip";
$zip = new ZipArchive;
$zip->open($zipName, ZipArchive::CREATE);
foreach ($groupFilesas $file) {
$zip->addFile($file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: ' . filesize($zipName));
readfile($zipName);
非常感谢任何帮助/建议。 在此先感谢:)
答案 0 :(得分:3)
由于您未正确处理查询结果,因此您实际上并未向zip添加任何内容。您正尝试将$ row数组作为文件名传递给$zip->addFile()
您也不需要从查询结果创建临时数组,然后处理您可以在第一个查询结果处理循环中执行所有操作。
同样在第二次尝试中,您不会发出执行查询,因此不会有任何结果需要处理。
请尝试以下方法: -
$query_ImageCollect = "SELECT image_url
FROM image_data
WHERE image_dealerid='$dealer_id'
AND imagename LIKE '$imageName'";
$ImageCollect = mysql_query($query_ImageCollect, $vwconn) or die(mysql_error());
$zipName="Pictures.zip";
$zip = new ZipArchive;
$zip->open($zipName, ZipArchive::CREATE);
while( $row = mysql_fetch_assoc( $ImageCollect)) {
// make sure you dont need to add anything to the
// $row['image_url'] to make a correctly pathed filename
$zip->addFile($row['image_url']);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: ' . filesize($zipName));
readfile($zipName);
如果您确实没有在任何地方报告任何错误,那么您的配置就会出现严重错误。 php错误文件应该是HUGH。
另外请不要使用多年来已被弃用的mysql_数据库扩展,特别是如果这是一个新的开发。 See this for help转移到
mysqli_
或PDO