sql >> Database >  >> RDS >> Mysql

Afbeeldingen uploaden naar de MySQL-database met behulp van PHP-code

Controleer eerst of uw afbeeldingskolom van het BLOB-type is !

Ik weet niets over uw SQL-tabel, maar als ik zal proberen om mijn eigen als voorbeeld te maken.

We hebben velden id (int), image (blob) en image_name (varchar(64)).

Dus de code zou er als volgt uit moeten zien (neem aan dat ID altijd '1' is en laten we deze mysql_query gebruiken):

$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! :("; 
}

Je doet het op veel manieren verkeerd. Gebruik geen mysql-functies - ze zijn verouderd! Gebruik BOB of MySQLi . U moet ook nadenken over het opslaan van bestandslocaties op schijf. Het gebruik van MySQL voor het opslaan van afbeeldingen wordt beschouwd als Bad Idea™. Omgaan met een SQL-tabel met big data zoals afbeeldingen kan problematisch zijn.

Ook uw HTML-formulier is buiten de standaarden. Het zou er zo uit moeten zien:

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

Kanttekening:

Bij het omgaan met bestanden en het opslaan ervan als een BLOB, moeten de gegevens worden ontsnapt met behulp van mysql_real_escape_string() , anders resulteert dit in een syntaxisfout.



  1. Hoe Oracle-schemagrootte weer te geven met SQL-query?

  2. SQL Row_Number() functie in Where-clausule

  3. 6 veelvoorkomende storingsscenario's voor MySQL en MariaDB en hoe u ze kunt oplossen

  4. Kunnen we een externe MySQL-database in Android verbinden met JDBC?