ファイル名を格納するデータベーステーブルがあります。それらは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
ある私はのように見えるが何であるかは明らかであると思います。私はselectですべてのファイル名を取得してから、そのフォルダを見て、zip形式でダウンロードしたい。
print_r($res);
がfile_1
列
からわずか1ファイルが含まれています。私は、エラーWarning: Illegal string offset 'file_1' in ... Warning: Illegal string offset 'file_2' in ... Warning: Illegal string offset 'file_3' in ...
がUPDATE持ってコードを実行すると、それでは私が今まで持っていることは
$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 }
です
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)に含まれていないと' foreachの(で '$ resArray' [ 'file_1' 、...]) '? – Justinas
私は私の質問を更新しました –