0

我有一个 PHP 页面,它为一个数据库 (db1) 中的一个或多个记录提取数据,然后将它们作为新记录添加到另一个数据库 (db2) 中。它几乎可以正常工作,但由于其中一个字段包含引号(以及撇号和度数符号)而导致记录失败。在添加到包含 real_escape_string 的 SQL 脚本之前,我使用了一个函数来清理每个字段。我认为这个函数应该处理引号和撇号,但输出仍然包含两者。

这是我的字符串清理功能:

protected function cleanInStr($str){
    $newStr = trim($str);
    $newStr = preg_replace('/\s\s+/', ' ',$newStr);
    $newStr = $this->conn->real_escape_string($newStr);
    return $newStr;
}

这是插入的 values(....) 部分中添加到 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

我错过了什么?为什么保留引号/撇号?

4

0 回答 0