Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw obiekty Blob w bazach danych MySql za pomocą php

Problem

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

Tworzy to ciąg znaków w PHP o nazwie $sql . Zapomnij na chwilę o MySQL, ponieważ nie wykonujesz jeszcze żadnego zapytania. Po prostu budujesz ciąg.

Magia PHP oznacza, że ​​możesz napisać nazwę zmiennej — powiedzmy $this->image_idwewnątrz podwójne cudzysłowy i zmienna nadal magicznie się rozszerzają.

Ta funkcja, znana jako „interpolacja zmiennych”, nie występuje w przypadku wywołań funkcji. Wszystko, co tutaj robisz, to pisanie ciągu "file_get_contents($tmp_image)" do bazy danych.

Rozwiązanie (1)

Tak więc, aby połączyć wynik wywołania file_get_contents($tmp_image) , musisz wyskoczyć z ciągu i zrobić coś wyraźnie:

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

(Widać nawet tylko ze składni podkreślającej, jak to działa).

Rozwiązanie (2)

Teraz problem, który masz, polega na tym, że jeśli dane binarne zawierają dowolny ' , Twoje zapytanie jest nieprawidłowe. Powinieneś więc uruchomić go przez mysql_escape_string aby oczyścić go do operacji zapytania:

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

Rozwiązanie (3)

Teraz masz naprawdę duży ciąg, a Twoja baza danych robi się nieporęczna.

Wolę nie przechowywać obrazy w bazach danych , gdzie możesz pomóc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać rekordy z ostatnich 15 dni w MySQL?

  2. Porządkowanie najpierw według określonej wartości pola

  3. Przyspieszenie zrzutów mysql i importów

  4. Jak używać hashowania hasła z PDO, aby mój kod był bezpieczniejszy?

  5. Jak skonfigurować automatyczne przełączanie awaryjne dla bazy danych Moodle MySQL?