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.