【发布时间】:2015-07-22 09:06:50
【问题描述】:
$serv = "xxx";
$user = "xxx";
$pass = "xxx";
$db = "xxx";
$imgloc = "../images/bg.jpg";
$image = fopen($imgloc, 'rb');
$imageContent = fread($image, filesize($imgloc));
$conn = new mysqli($serv, $user, $pass, $db);
$sql = "INSERT INTO `image`(`advert_id`,`img`) VALUES('1','" . $imageContent . "');";
$conn->query($sql);
我正在使用上面的代码尝试将二进制文件插入我的 MySQL 数据库,但没有任何内容发送到数据库。 $imageContent 只是在数据库中显示为 null,但如果我回显 $imageContent,它似乎显示的是二进制数据。
advert_id 只是一个 int 字段,而 img 是一个 BLOB
【问题讨论】:
-
您容易受到sql injection attacks 的攻击。您不能只是将随机二进制垃圾填入查询字符串并期望一切正常。
-
我应该使用什么功能来清理它?
-
作为一个切题的评论,我建议确保您确实有一个在 MySQL 中存储图像 blob 的良好用例。在很多情况下,与简单地将文件引用存储在数据库中相比,这可能不是一个好主意。