Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да кача изображение на PHP и да вмъкна път в MySQL?

В коментара си питате как да качите и съхранявате данните в 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"];

  }

Тъй като частта „Stored in:“ е само временният път, трябва да преминете към вашия „реален“ път на изображението, като използвате 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]')";

И се уверете, че изображенията са качени успешно в тази директория/път на изображението по подразбиране .

АКТУАЛИЗИРАНЕ

Също така препоръчвам да използвате mysqli_* или PDO и използвайте prepare() метод /функция за предотвратяване на инжектиране на sql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 60 милиона записи, изберете записи от определен месец. Как да оптимизираме базата данни?

  2. Как да използвате квадратчета за отметка за извличане на конкретни данни в база данни

  3. Свързване на MATLAB и MySQL с JDBC драйвера

  4. Как да изберете отделни редове, без да използвате група по оператор

  5. Изберете mySQL въз основа само на месец и година