我有一个php页面,我用来从csv文件导入订单到mysql数据库。表中的一个varchar用于txnid。我发现偶尔会遇到导致"解析期间发现非法双值"错误的txnid。例如:
6L831105EP011602
是一个不会引起任何麻烦的好值。
71V72876YH791094
同样,没有问题。
546635980E5898057
但是这个会导致错误,可能是因为它被解析为双精度类型。
我已经尝试使用mysql_real_escape_string来净化数据,但这导致所有值都带有''
前缀,除非它们将被解析为双精度。
处理这些数据的正确方法是什么?如何确定一个值是否会导致解析错误之前,我试图将其插入MySQL?
mysql_real_escape_string()
does NOT为字符串添加引号。它转义 sql元字符。
。
$str1 = "Miles O'Brien";
$str2 = "546635980E5898057";
$str3 = 42;
echo mysql_real_escape_string($str1); // output: Miles O''Brien
echo mysql_real_escape_string($str2); // output: 546635980E5898057
echo mysql_real_escape_string($str3); // output: 42
在任何情况下,都不会像'Miles O''Brien'
那样突然出现,除非你自己添加了那些引号。例如
echo "'" . mysql_real_escape_string($str1) . "'";