MySQL Real Escape String不会转义行情或撇号

时间:2013-10-07 17:33:53

标签: php mysql sql

我有一个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

我错过了什么?为什么引号/撇号仍然存在?

0 个答案:

没有答案