我有一个PHP页面,它为一个数据库(db1)中的一个或多个记录提取数据,然后将它们作为新记录添加到另一个数据库(db2)中。它几乎是功能性的,但是记录失败,因为其中一个字段包含引号(和撇号和度数符号)。在添加到SQL脚本(包括real_escape_string)之前,我使用了一个函数来清理每个字段。我认为这个函数应该用于处理引号和撇号,但输出仍然包含两者。
这是我的字符串清理功能:
protected function cleanInStr($str){
$newStr = trim($str);
$newStr = preg_replace('/\s\s+/', ' ',$newStr);
$newStr = $this->conn->real_escape_string($newStr);
return $newStr;
}
以下是在插入的值(....)部分中添加到SQL脚本的实际有问题的字段:
($occArr["verbatimcoordinates"]?'"'.$this->cleanInStr($occArr["verbatimcoordinates"]).'"':"NULL").','.
以下是db1中有问题字段中的数据:
31° 28' 18.5" N 110° 21' 22.5" W
并且,上面的清洁功能清理和回显之后的数据相同:
31° 28' 18.5" N 110° 21' 22.5" W
我错过了什么?为什么引号/撇号仍然存在?