у меня есть загрузка нескольких файлов, но она зацикливается только один раз и останавливается это означает, что я получаю в базе данных только один файл
я пытался вставить часть db внутри цикла, но его несколько строк в db и я не хочу, чтобы это было так
if (isset($_POST['submit'])){
$websites = $_POST['websites'];
foreach($_FILES['documents']['tmp_name'] as $key => $tmp_name){
$file_name = $key.$_FILES['documents']['name'][$key];
$file_size =$_FILES['documents']['size'][$key];
$file_tmp =$_FILES['documents']['tmp_name'][$key];
$file_type=$_FILES['documents']['type'][$key];
move_uploaded_file($file_tmp,"uploads/".time().$file_name);
}
print_r($file_name);
$pdo = DB();
$stmt = $pdo->prepare("INSERT INTO client_form_7
(client_id, documents, websites)
VALUES (:client_id, :documents, :websites)");
$stmt->bindParam("client_id", $user_id, PDO::PARAM_INT);
$stmt->bindParam("documents", $file_name, PDO::PARAM_STR);
$stmt->bindParam("websites", $websites, PDO::PARAM_STR);
$stmt->execute();
}
я хочу, чтобы все мои файлы хранились в БД в виде массива
РЕДАКТИРОВАТЬ
мое решение
просто создайте пустой массив перед foreach и внутри foreach поместите имя файла в новый массив, а снаружи закодируйте массив, полный имен файлов, с помощью json_encode и вставьте его в базу данных, спасибо, ребята, за работу
код
$arr = array();
foreach($_FILES['documents']['tmp_name'] as $key => $tmp_name){
$file_name = $key.$_FILES['documents']['name'][$key];
$file_size =$_FILES['documents']['size'][$key];
$file_tmp =$_FILES['documents']['tmp_name'][$key];
$file_type=$_FILES['documents']['type'][$key];
move_uploaded_file($file_tmp,"uploads/".time().$file_name);
$arr[] = $file_name;
}
$files = json_encode($arr);
Так что вам лучше описать полученную ОДНУ СТРОКУ в таблице, которую вы хотите построить из нескольких загрузок файлов.
Если вы хотите поместить эти файлы в разные столбцы в одной строке, то это не имеет особого смысла для «неограниченного» количества файлов для начала (потому что количество столбцов просто не является «динамическим».) В этом случае я скорее ожидайте, что цикл for будет выполняться в течение определенного интервала.
@jon Stirling, я хочу, чтобы это было в одной строке в моем решении, но только один раз и только один файл вставляется в базу данных.
@YosefDadya Итак, как спросил Риггс, как должна выглядеть эта строка с несколькими файлами?
@jonstirling массив, содержащий имена файлов
MySQL на самом деле не имеет массивов.
@jonstirling Да, я знаю, но есть способ сохранить это, например, множественный выбор и опцию с помощью json_encode()? (я пробовал это с json_encode, и это не работает)
Вы можете сохранить их несколькими способами, вы можете сохранить их в формате JSON, вы можете сохранить их в виде списка CSV, вы можете добавить новую таблицу, которая ссылается на client_form_7. Много вариантов. Вот почему мы спрашиваем, чего хочет ты. Если вы хотите, чтобы это был JSON, обновите код в вопросе, чтобы отразить то, что вы пытались использовать с json_encode, с объяснением того, что именно не сработало, и мы посмотрим






Итак, вам не нужна одна строка, и вы не хотите несколько строк? Смущенный.