首页 >数据库 >mysql教程 >如何使用 PHP 正确地将图像 Blob 插入 MySQL?

如何使用 PHP 正确地将图像 Blob 插入 MySQL?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-26 15:53:09203浏览

How to Properly Insert Image Blobs into MySQL Using PHP?

使用 PHP 将 Blob 插入 MySQL 数据库

当需要在 MySQL 数据库中存储图像时,可能会遇到困难。表结构如下:

mysql> describe ImageStore;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| ImageId | int(11)  | NO   | PRI | NULL    |       |
| Image   | longblob | NO   |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

以下查询尝试插入图像,但无法存储预期的二进制数据:

$tmp_img = $this->image['tmp_name'];
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','file_get_contents($tmp_image)')";
mysql_query($sql); 

问题在于函数的串联在字符串内调用 file_get_contents($tmp_image) 。 PHP 的变量插值仅适用于变量,不适用于函数调用。以下是三种解决方案:

解决方案 1: 使用显式串联:

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

解决方案 2: 清理 MySQL 查询的二进制数据:

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

注意:如果可能的话,最好不要将大图像存储在 MySQL 数据库中。

以上是如何使用 PHP 正确地将图像 Blob 插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn