问题:
尝试将图像存储在 MySQL 数据库中,但是插入不成功。数据库表有两列:ImageId (int) 和 Image (longblob)。 PHP 代码使用 file_get_contents() 检索图像数据,并使用以下 SQL 查询将其插入到 Image 列中:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
但是,图像数据不会存储在数据库中。
解决方案:
问题在于 PHP 代码构造 SQL 查询的方式。 file_get_contents() 函数调用包含在查询字符串的单引号内,这意味着未插入实际图像数据。为了解决这个问题,应该使用 PHP 的变量插值功能:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
此外,为了确保二进制数据不包含任何可能破坏 SQL 查询的字符,建议使用以下方法清理数据mysql_escape_string() 函数:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_real_escape_string(file_get_contents($tmp_image)) . "')";
附加注意事项:
在数据库中存储大型二进制数据可能会导致性能问题。考虑为图像和其他大型对象使用单独的存储介质,例如文件系统或云存储服务。
以上是如何使用 PHP 成功将 Blob(图像)插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!