sqlserver 中存文件用到的字段类型是 image,存储 16 进制数据。之前虽说弄过加了引号,也能失常应用,但其实是谬误的。因而记录一下,以儆效尤!
// 上传文件转二进制 (本人调的函数,仅供参考)
function file2hex($name)
{$fileData = array();
$fp = fopen($_FILES[$name]["tmp_name"], "rb");
$content = fread($fp, filesize($_FILES[$name]["tmp_name"]));
$fileData['data'] = "0x".bin2hex($content);
$fileData['name'] = $_FILES[$name]["name"];
$fileData['type'] = $_FILES[$name]["type"];
$fileData['size'] = $_FILES[$name]["size"];
fclose($fp);
return $fileData;
}
//sql 语句 (因为公司数据库字段名都是中文,所以用的原生,重点是 image 类型的不要加引号)
$sql="UPDATE ...., 数据 =$fileData[data] WHERE ....";
最重要的就是 sql 语句中转换好的数据不要加引号,会被 sqlserver 当字符串解决转换的