Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да качите изображения в MySQL база данни с помощта на PHP код

Първо, трябва да проверите дали вашата колона с изображение е тип BLOB !

Не знам нищо за вашата SQL таблица, но ако се опитам да направя моя собствена като пример.

Имаме полета id (int), image (blob) и image_name (varchar(64)).

Така че кодът трябва да изглежда така (да приемем, че ID винаги е '1' и нека използваме тази 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! :("; 
}

Правите го погрешно по много начини. Не използвайте mysql функции - те са отхвърлени! Използвайте PDO или MySQLi . Трябва също да помислите за съхраняване на местоположения на файлове на диск. Използването на MySQL за съхранение на изображения се смята за лоша идея™. Обработката на SQL таблица с големи данни като изображения може да бъде проблематична.

Също така вашият HTML формуляр е извън стандартите. Трябва да изглежда така:

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

Странична бележка:

Когато работите с файлове и ги съхранявате като BLOB, данните трябва да бъдат екранирани с помощта на mysql_real_escape_string() , в противен случай това ще доведе до синтактична грешка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановяване на MySQL база данни от физически файлове

  2. SQL - Актуализирайте множество записи в една заявка

  3. Как да свържа mysql workbench към работещ mysql вътре в docker?

  4. MySQL - Условни ограничения на външния ключ

  5. Конфигурационната система не се инициализира