Nejprve byste měli zkontrolovat, zda sloupec obrázku je typu BLOB !
Nevím nic o vaší SQL tabulce, ale pokud zkusím udělat svou vlastní jako příklad.
Máme pole id
(int), image
(blob) a image_name
(varchar(64)).
Kód by tedy měl vypadat takto (předpokládejme, že ID je vždy '1' a použijeme tento 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! :(";
}
V mnoha ohledech to děláte špatně. Nepoužívejte funkce mysql – jsou zastaralé! Použijte CHOP nebo MySQLi . Měli byste také myslet na ukládání umístění souborů na disk. Používání MySQL pro ukládání obrázků je považováno za špatný nápad™. Manipulace s tabulkou SQL s velkými daty, jako jsou obrázky, může být problematická.
Také váš HTML formulář je mimo standardy. Mělo by to vypadat takto:
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
<label>File: </label><input type="file" name="image" />
<input type="submit" />
</form>
Vedlejší poznámka:
Při práci se soubory a jejich ukládání jako BLOB musí být data escapována pomocí mysql_real_escape_string()
, jinak dojde k chybě syntaxe.