我有一个用于将csv文件中的订单导入mysql数据库的php页面。表中的一个varchar用于txnid。我发现偶尔会遇到一个导致“解析期间发现非法双值”错误的txnid。例如:
6L831105EP011602
是一个很好的值,不会造成任何麻烦。
71V72876YH791094
再次,没有问题。
546635980E5898057
但是这个导致错误,大概是因为它被解析为双倍。
我尝试使用mysql_real_escape_string来清理数据,但是这会导致所有值都以''
为前缀,除非它们被解析为double。
我应该对这些数据进行消毒的正确方法是什么?在尝试将值插入MySQL之前,如何确定值是否会导致解析错误?
答案 0 :(得分:3)
mysql_real_escape_string()
不为字符串添加引号。它 ESCAPES sql元字符。
e.g。
$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'
,除非您自己添加这些引号。 e.g。
echo "'" . mysql_real_escape_string($str1) . "'";