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.