sql >> Databasteknik >  >> RDS >> Mysql

Hur man laddar upp bilder till MySQL-databasen med PHP-kod

Först bör du kontrollera om din bildkolumn är av typen BLOB !

Jag vet ingenting om din SQL-tabell, men om jag ska försöka göra en egen som ett exempel.

Vi har fält id (int), image (blob) och image_name (varchar(64)).

Så koden bör se ut så här (antag att ID alltid är '1' och låt oss använda denna 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! :("; 
}

Du gör fel på många sätt. Använd inte mysql-funktioner - de är utfasade! Använd PDO eller MySQLi . Du bör också tänka på att lagra filplatser på disken. Att använda MySQL för att lagra bilder anses vara Bad Idea™. Att hantera SQL-tabeller med stora data som bilder kan vara problematiskt.

Även ditt HTML-formulär är ur standard. Det ska se ut så här:

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

Sidenote:

När man hanterar filer och lagrar dem som en BLOB, måste data escapes med mysql_real_escape_string() , annars kommer det att resultera i ett syntaxfel.



  1. Datageneratorer för SQL-server?

  2. fel:'Kan inte ansluta till lokal MySQL-server via socket '/var/run/mysqld/mysqld.sock' (2)' -- Saknar /var/run/mysqld/mysqld.sock

  3. Optimeringsfaser och missade möjligheter

  4. Hur uppdaterar jag om det finns, infogar om inte (AKA upsert or merge) i MySQL?