我无法弄清楚我的SQL有什么问题。以下是生成查询的PHP脚本:
function SaveData($data,$id,$file)
{
$handle = fopen($file['file']['tmp_name'], 'r');
$datafile = fread($handle, filesize($file['file']['tmp_name']));
$datafile = mysql_real_escape_string($datafile);
fclose($handle);
$query= "UPDATE data SET Text='" . $data['Text'] . "', Binary='$datafile', Tag='" . $data['Tag'] . "', name='" . $file['file']['name'] . "',type='" . $file['file']['type'] . "', size='" . $file['file']['size'] . "' WHERE Object_ID=".$id;
mysql_query($query,$this->connection) or die(mysql_error());
}
如果出现以下错误:
您的SQL语法有错误; 检查对应的手册 您的MySQL服务器版本 正确的语法使用附近 '二进制='%PDF-1.5 \ r%âÏÓ\ r \ n37 0 OBJ \为r
任何人都可以给我一些指示吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
答案 2 :(得分:0)
除了其他答案指出的语法错误之外,你不能只是将带有二进制数据的变量推送到这样的SQL查询中。您必须先将其转换为十六进制字符串。
function SaveData($data,$id,$file)
{
$handle = fopen($file['file']['tmp_name'], 'rb'); // note the b here
$datafile = fread($handle, filesize($file['file']['tmp_name']));
$contents = bin2hex(($datafile)); // no need to escape this
fclose($handle);
$query= "UPDATE data SET Text='" . $data['Text'] . "', `Binary`=x'$contents';
// rest of the code trimmed
}
另请注意,您的字段必须是BLOB
才能接受二进制数据。