Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wgrać obraz PHP i wstawić ścieżkę w MySQL?

W swoim komentarzu pytasz, jak wgrać i przechowywać dane do mysql. Oto on:

Aby pobrać plik, powinieneś mieć skrypt w swoim html, taki jak ten:

<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>

Teraz, w POST, twój plik PHP powinien wyglądać tak, ale pamiętaj, że musisz sprawdzić, czy plik istnieje w twoim 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"];

  }

Ponieważ część „Przechowywane w:” jest tylko ścieżką tymczasową, należy przejść do „prawdziwej” ścieżki obrazu za pomocą move_uploaded_file() .Powiedzmy, że rzeczywista/domyślna ścieżka do Twoich obrazów to:

$image_dir= '/images/';

Wystarczy przenieść plik za pomocą tego:

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

Twoja pełna ścieżka do obrazu byłaby

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

Ścieżkę do bazy danych można zapisać na kilka sposobów:

Pierwszy:ma przechowywać tylko nazwę pliku i połącz ścieżkę obrazu w PHP za pomocą $_SERVER['DOCUMENT_ROOT'] i domyślną ścieżką obrazu, np.:

$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]')";

Drugi:ma przechowywać pełną ścieżkę jak:

$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]')";

To, co polecam, to podejście, w którym wprowadzisz ścieżkę częściową (bez katalogu głównego), aby później nie było problemu z jego wdrożeniem:

$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]')";

I upewnij się, że obrazy zostały pomyślnie przesłane do tego domyślnego katalogu/ścieżki obrazu .

AKTUALIZUJ

Zalecam również użycie mysqli_* lub PDO i użyj prepare() metoda / funkcja zapobiegająca wstrzykiwaniu 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. Tabela PHP (data) dynamiczna zmiana koloru na podstawie ważności

  2. Jak zmienić hasło do bazy danych

  3. Jak wykonywać surowe zapytania za pomocą Laravel 5.1?

  4. Ograniczenie CHECK w MySQL nie działa

  5. Jak uzyskać strukturę tabeli MySQL w PHP? Plus lista wszystkich stołów?