sql >> Databáze >  >> RDS >> Mysql

Jak nahrát obrázky do databáze MySQL pomocí kódu PHP

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.



  1. Rychle vložte 2 miliony řádků do SQL Serveru

  2. Oracle Převeďte TIMESTAMP s časovým pásmem na DATE

  3. Jak migrovat databáze na váš Reseller Server

  4. Automaticky zvýšit primární klíč v SQL Server Management Studio 2012