0
Я добавляю имя и изображение документа в базу данных через PHP.
Имя вставлено, но загруженное изображение не вставлено после третьего, а не следующего цикла или массива.PHP цикл после третьего ввода файла не добавлен в массив?
Пожалуйста, скажите мне, если это петля или массив или запрос, который является неправильным.
Вот мой код:
$stock_no = $_POST["txt_stock_no"]; //hidden input
$doc_name = $_POST["chk"];
$doc_file = $_FILES["doc_file"]["name"];
$doc_tmp_name = $_FILES["doc_file"]["tmp_name"];
$add_by=charEsc($_SESSION["User_ID"]);
foreach ($doc_name as $value => $b) {
$image_new = md5(uniqid(mt_rand(), true));
$ext = end(explode(".", $doc_file[$value])); //gets extension
move_uploaded_file($doc_tmp_name[$value],"assets/documents/" .$image_new."-".$stock_no.".".$ext);
$rep = query("INSERT INTO documents (`stock_no`, `Document_Name`, `Document_Upload`) Values ('$stock_no','$doc_name[$value]','assets/documents/" .$image_new."-".$stock_no.".".$ext."')");
}
Пожалуйста переформулировать ваш вопрос. Неясно, что работает и что не работает. Я могу обнаружить по крайней мере две вещи в коде: 1) отсутствует '}' и 2) '$ doc_name' получается из' $ _POST' и является строкой. Вы не можете использовать строку в 'foreach' так, как вы ее здесь представляете. –
после вашего редактирования: это полный код? Поскольку часть 'foreach ($ doc_name as $ value => $ b)' действительно должна давать предупреждение PHP и (особенно, если не знать значение wat '$ doc_name'), вероятно, никогда не запустит цикл. Что вы ожидаете от типа и значения '$ doc_name'? –
еще одна вещь для проверки: какой максимальный размер выгрузки? Это зависит не только от скрытого поля MAX_FILE_SIZE в форме (я полагаю, вы используете это? На самом деле это необходимо), но также и в настройках параметров php.ini и, возможно, на сервере. Часто это всего лишь 2 МБ. Каков общий размер загружаемых файлов? Возможно, цикл начинает сбой после превышения максимального размера? Также проверьте значения в '$ _FILES [" doc_file "] [" error "]'! –