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
子句,因为到现在为止,它会影响表中的所有行。