php mysql更新blob

php mysql更新blob,php,mysql,string,binary,blob,Php,Mysql,String,Binary,Blob,PHP/mySql新手,在插入和检索二进制数据时遇到问题。我有一个名为usr_pressdata的mySql表。字段“BinDat”的类型为mediumblob $dat = $this->parseOverview($sql); // $dat is now a binary string $datsql = "Update usr_pressdata Set BinDat = " . $dat; $datresult = mysql_query($datsql, $this

PHP/mySql新手,在插入和检索二进制数据时遇到问题。我有一个名为usr_pressdata的mySql表。字段“BinDat”的类型为mediumblob

$dat = $this->parseOverview($sql);
    // $dat is now a binary string

$datsql = "Update usr_pressdata Set BinDat = " . $dat;
$datresult = mysql_query($datsql, $this -> conn) or die(mysql_error());

$getdat = "Select * from usr_pressdata";
$getdatresult = mysql_query($getdat, $this -> conn) or die(mysql_error());
$row = mysql_fetch_array( $getdatresult );
   $retval = $row['BinDat'];

在这个例子中,我的目标是$retval==$dat,但它不是。我怀疑我的查询字符串$datsql不正确。有人能纠正这个示例代码吗?谢谢。

在表中插入值时(或者更一般地说,在SQL请求中包含值时):

  • 字符串必须括在引号(“…”)之间
  • 必须使用
    mysql\u real\u escape\u string
    对字符串进行“转义”,以防止出现错误
  • 所以你需要写一些东西,比如:

    $request = "UPDATE usr_pressdata SET bindat= '" . mysql_real_escape_string($dat) . "';";
    

    我怀疑您可能想在末尾添加一个
    WHERE someColumn=someCondition
    子句,因为现在它会影响表中的所有行。

    可以影响表中的所有行。只有一行。此sql请求对我无效。mysql_real_escape_string是本机方法吗?是的,请看这里:$retval和$dat有何不同?您是否尝试了两个变量的var_dump()?