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

Вмъкнете Blobs в MySql бази данни с php

Проблем

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','file_get_contents($tmp_image)')";

Това създава низ в PHP с име $sql . Забравете за MySQL за минута, защото все още не изпълнявате никаква заявка. Просто изграждате низ.

Магията на PHP означава, че можете да напишете име на променлива – да речем, $this->image_idвътре двойните кавички и променливата все още се разширяват магически.

Тази функционалност, известна като "интерполация на променлива", не се извършва при извиквания на функции. И така, всичко, което правите тук, е да пишете низа "file_get_contents($tmp_image)" в базата данни.

Решение (1)

И така, за да свържете резултата от извикването на file_get_contents($tmp_image) , трябва да изскочите от низа и да направите нещата изрично:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";

(Можете да видите дори само от синтаксиса, подчертаващ как това е работило.)

Решение (2)

Проблемът, който имате, е, че ако двоичните данни съдържат някакъв ' , вашата заявка не е валидна. Така че трябва да го стартирате през mysql_escape_string за да го дезинфекцирате за операцията на заявката:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";

Решение (3)

Сега имате наистина голям низ и вашата база данни става обемиста.

Предпочитайте да не съхранявате изображения в бази данни , където можете да помогнете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате множество бази данни в Laravel

  2. MySQL на Docker - Как да контейнеризирате вашата база данни:Нова бяла книга

  3. Не може да се свърже с MySQL 4.1+ чрез старо удостоверяване

  4. Групирайте редовете с помощта на клауза Group By в MySQL

  5. Mysql синхронизиране на база данни между две бази данни