问题
$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)
因此,要连接call的结果
file_get_contents($tmp_image),您必须跳出字符串并明确地执行操作:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";(您甚至可以仅从语法中看到它的工作原理。)
解决方案(2)
现在的问题是,如果二进制数据包含any
',则查询无效。因此,您应该运行它
mysql_escape_string以对查询操作进行清理:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";解决方案(3)
现在你有一个 真正的 大串,和你的数据库越来越庞大。
最好不要将图像存储在数据库中,您可以在其中提供帮助。



