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

Jak przesłać obrazy do bazy danych MySQL za pomocą kodu PHP?

Najpierw sprawdź, czy Twoja kolumna obrazu jest typu BLOB !

Nie wiem nic o twojej tabeli SQL, ale spróbuję stworzyć własną jako przykład.

Mamy pola id (int), image (blob) i image_name (varchar(64)).

Więc kod powinien wyglądać tak (załóżmy, że ID to zawsze '1' i użyjmy mysql_query):

$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

Robisz to źle na wiele sposobów. Nie używaj funkcji mysql - są przestarzałe! Użyj PDO lub MySQLi . Powinieneś także pomyśleć o przechowywaniu lokalizacji plików na dysku. Używanie MySQL do przechowywania obrazów jest uważane za Zły Pomysł™. Obsługa tabeli SQL z dużymi danymi, takimi jak obrazy, może być problematyczna.

Również twój formularz HTML jest poza standardami. Powinno to wyglądać tak:

<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

Przypis:

Kiedy mamy do czynienia z plikami i przechowujemy je jako BLOB, dane muszą zostać zmienione za pomocą mysql_real_escape_string() , w przeciwnym razie spowoduje to błąd składni.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimportować plik CSV do tabeli MySQL?

  2. PHP PDO i MySQLi

  3. Przestarzałe:mysql_connect()

  4. Dostrajanie wydajności zapytań MySQL

  5. Neo4j - Usuń związek za pomocą Cypher