Проблем
$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)
Сега имате наистина голям низ и вашата база данни става обемиста.
Предпочитайте да не съхранявате изображения в бази данни , където можете да помогнете.