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_real_escape_string对字符串进行“转义”,以防止SQL injection


因此,您需要编写如下内容:

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


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

10-05 21:28