我正在尝试将二进制数据插入到MySql数据库的BLOB数据类型字段中,并且我有以下代码:
$dataset = array();
if (!empty($_FILES)) {
foreach ($_FILES as $k => $f) {
$dataset[$k] = "data:" . $_FILES[$k]["type"] . ";" . file_get_contents($_FILES[$k]["tmp_name"]);
}
}
$sql = "UPDATE table_name SET ";
foreach ($dataset as $key => $val) {
if (!is_null($val) && $val !== false)
$sql .= $key . "=" . (is_numeric($val) ? $val : "'" . $val . "'") . ",";
}
}
$sql = rtrim($sql, ",");
$sql .= " WHERE id = 1";
$mysql = new mysqli("localhost" , "db_username", "db_password", "db_name");
$mysql->query($sql);
我已经读过有关base64_encode的内容,但是我想把原始二进制文件放到数据库中,所以mysql blob类型会对它进行处理。
我还发现了mysql_real_escape_string()函数,但我看到另一个代码在没有转义二进制数据的情况下工作。
我知道这是尝试将原始二进制文件发送到出错的mysql,因为mysql返回1064错误,当我从查询中删除二进制文件时,它只是神奇地工作!
有人可以帮忙吗?
PS:请不要把它标记为重复,因为在问这里之前,我已经对其他线程进行了很好的研究,但我得到的所有答案都没有用。