Как загрузить изображение PHP и вставить путь в MySQL?

Я хотел бы включить в мою таблицу MySQL путь к изображению. Путь изображения попадает в таблицу, вставляя значение текстового поля «файл» (один из тех, которые просматривают вид сделок). Таким образом, значение, которое вводится, выглядит примерно так: image001.jpg . Но я не могу использовать это значение, чтобы поместить изображение в html-страницу. если он отлично подходит к столу, почему я не могу его вытащить?

Я загружаю изображение, но я не знаю, куда он ушел. Поскольку в поле изображения нет значения, когда я проверил его через PhpMyadmin.

Схема таблицы

 CREATE TABLE employee_details ( emp_image varchar(255), employee_name varchar(50), employee_address varchar(50), employee_designation varchar(50), employee_salary int(), ); 

запрос

 $sql=" INSERT INTO employee_detail( emp_image, employee_name, employee_address, employee_contact, employee_designation, employee_salary ) VALUES( '$_POST[emp_image]', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]', '$_POST[employee_designation]', '$_POST[employee_salary]' )"; 

В своем комментарии вы спрашиваете, как загрузить и сохранить данные в mysql. Итак, вот оно:

Чтобы получить файл, у вас должен быть скрипт в вашем html, например:

 <html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html> 

Теперь, в POST, ваш PHP-файл должен выглядеть так, но, пожалуйста, обратите внимание, что вам нужно проверить, существует ли файл в вашем POST:

 if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } 

Поскольку часть «Сохранено в:» является всего лишь временным путем, вы должны перейти к вашему «реальному» пути изображения, используя move_uploaded_file () . Скажем, реальный / стандартный путь для ваших изображений:

 $image_dir= '/images/'; 

Вам просто нужно переместить файл, используя это:

 move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $image_dir. $_FILES['uploaded_file']['name']); 

И ваш полный путь к изображению будет

 $image = $final_save_dir . $_FILES['uploaded_file']['name']; 

Существует несколько способов сохранения пути к вашей базе данных:

1-й: хранить только имя файла и конкатенировать путь изображения на PHP с помощью $_SERVER['DOCUMENT_ROOT'] и путь по умолчанию, например:

 $sql="insert into employee_detail( emp_image, employee_name, employee_address, employee_contact, employee_designation, employee_salary) values( '$image', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]', '$_POST[employee_designation]','$_POST[employee_salary]')"; 

2-й: хранить полный путь, как:

 $sql="insert into employee_detail( emp_image, employee_name, employee_address, employee_contact, employee_designation, employee_salary) values( '".$_SERVER['DOCUMENT_ROOT']."\\images\\".$image."', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]', '$_POST[employee_designation]','$_POST[employee_salary]')"; 

Я рекомендую этот подход, в котором вы вводите частичный путь (без корневого каталога), чтобы позже у вас не возникло проблемы при его развертывании:

 $sql="insert into employee_detail( emp_image, employee_name, employee_address, employee_contact, employee_designation, employee_salary) values( 'images\\".$image."', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]', '$_POST[employee_designation]','$_POST[employee_salary]')"; 

И убедитесь, что изображения успешно загружаются в этот каталог dir / path по умолчанию .

ОБНОВИТЬ

Я также рекомендую вам использовать mysqli_* или PDO и использовать метод / функцию prepare() для предотвращения внедрения sql.

Если вы загружаете изображение, оно сначала сохраняется во временном пути. Вам нужно будет перенести его в ваш конечный каталог, иначе он исчезнет после выполнения сценария. В основном это происходит:

Если у вас есть форма с полями какой-либо формы (текст, флажок, текстовая область, что угодно), И поле файла ( <input type="file" name="uploaded_file" /> ), все «нормальные» поля будут доступны с помощью $_POST массив. Однако файл (ы) будет доступен в массиве $_FILES (см. Также $_FILES страницу о $_FILES файлов ).

Теперь, когда вы получаете запрос POST, загруженные файлы хранятся во временном каталоге. Если вы ничего не сделаете, он будет удален снова после выполнения скрипта. Поэтому вам нужно вызвать функцию move_uploaded_file () . Пример:

 $final_save_dir = '/path/to/images/dir/'; move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $final_save_dir . $_FILES['uploaded_file']['name']); 

И ваш полный путь к изображению будет

 $image_full_path = $final_save_dir . $_FILES['uploaded_file']['name']; 

Этот путь можно сохранить в вашей базе данных:

 $sql=" INSERT INTO employee_detail( emp_image, ... ) VALUES( '$image_full_path', ... )"; 

ВАЖНО: обратите внимание на комментарий @ brewal. Ваш сценарий ОЧЕНЬ небезопасен.