使用php将二进制数据插入/更新到mysql

时间:2016-02-23 20:50:30

标签: php mysql blob binary-data

我正在尝试将二进制数据插入到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:请不要把它标记为重复,因为在问这里之前,我已经对其他线程进行了很好的研究,但我得到的所有答案都没有用。

0 个答案:

没有答案