尝试在 MySQL 数据库中存储图像时,某些用户可能会遇到图像不正确的问题未正确插入。这种差异可能是由于对 PHP 如何处理内插字符串中的函数调用的误解而产生的。
在以下代码中,目的是将二进制图像数据存储在数据库中:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
但是,这种方法创建一个包含“file_get_contents($tmp_image)”的字符串,而不是实际的字符串
要解决此问题,函数调用必须在字符串中显式串联:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
现在,图像数据是在执行查询之前正确插入到字符串中。
二进制图像数据可能包含特殊字符,例如单引号,这可能会使 SQL 查询无效。为了缓解这种情况,应该在插值之前对数据进行转义:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
需要注意的是,在数据库中存储大量图像数据可能效率低下。考虑替代存储选项,例如将图像路径存储在数据库中,将实际图像存储在专用文件系统或内容交付网络 (CDN) 中。
以上是如何使用 PHP 成功将 BLOB(图像)插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!