我有用於存儲文件名的數據庫表。它們存儲在3列中,每列可以存儲多個用逗號分隔的文件。就像這樣:file_id
,file_1
,file_2
和file_3
是列名從mysql中的3列中選擇文件並將它們壓縮
file_id | file_1 | file_2 | file_3
1 file_1.txt, file_1.1.txt.. | file_2.txt,file_2.2.txt | file_3.txt,file_3.3.txt
我希望是明確什麼是什麼樣子的。我希望選擇所有文件名,然後查看文件夾並以zip格式下載。所以,我有什麼直到現在
$filePath = 'uploads/';
$sql = "SELECT * FROM uploads WHERE file_id = 1"; // just for testing
$result = $pdo->prepare($sql);
//$result->bindParam(":id", $id);
$result->execute();
$resArray = $result->fetch();
foreach(['file_1', 'file_2', 'file_3'] as $col){
if (file_exists($filePath . $resArray[$col])){
$valid_files[] = $resArray[$col];
}
}
if(count($valid_files > 0)){
$zip = new ZipArchive();
$zip_name = "zipfile.zip";
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){
$error .= "* Sorry ZIP creation failed at this time";
}
foreach($valid_files as $res){
$zip->addFile($filePath.$res['file_1']);
$zip->addFile($filePath.$res['file_2']);
$zip->addFile($filePath.$res['file_3']);
}
//print_r($valid_files);
$zip->close();
// zip download
}
當我跑我有錯誤
代碼Warning: Illegal string offset 'file_1' in ...
Warning: Illegal string offset 'file_2' in ...
Warning: Illegal string offset 'file_3' in ...
UPDATE:
print_r($res);
只包含1個文件從file_1
列
file_1.txt
print_r($resArray);
包含的所有文件從所有列..和奇怪的事情是,每個文件在陣列2倍
陣列([file_1] => file_1.txt [0] => file_1.txt [file_2] => file_2.txt,[1] => file_2.txt,[file_3] => file_3.txt,file_3.3.txt .jpg,file_3.3.txt,file_3.3.txt,file_3.3 .txt,[2] => file_3.3.txt,file_3.3.txt,file_3.3.txt,file_3.3.txt,file_3.3.txt,)
什麼'$ res'包含在'的foreach($ valid_files)'和'$ resArray'在'的foreach([ 'file_1' ,...])? – Justinas
我已更新我的問題 –