1

我正在通过 CSV 文件将电子邮件地址上传fgetcsv()到 MySQL 数据库中。我遇到的问题是我无法转义包含撇号(或单引号)的电子邮件地址。

所以,O'Keefe@aol.com不会变成O\'Keefe@aol.com

我知道这应该发生,但是我一直无法找到一个可行的解决方案来逃避撇号。有人可以给我任何帮助吗?这是我的代码:

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
            {

                $num = count($data);
                $row++;
                for ($c=0; $c < $num; $c++) {
                    //echo $data[$c] . "<br />\n";
                    $clean_value = cleanse($data[$c]);

                    if(validEmail($clean_value)){
                        $query = mysql_query("INSERT INTO addresses (lid, email_addresses) VALUES ('$lid', '$clean_value')");
                    }else{
                        if($clean_value != ""){
                            $invalid_addresses .= $clean_value.', ';
                        }
                    }

                    /*if(mysql_error()){
                        $failed_addresses .= $data[$c].', '.mysql_error() . "<br />\n";
                    }*/
                }
            }

$query = mysql_query("INSERT INTO addresses (lid, email_addresses) VALUES ('$lid', \"". mysql_real_escape_string($clean_value) ."\")");

...这对我不起作用

4

3 回答 3

1

我不知道你的cleanse函数到底是做什么的,但为什么不使用mysql_real_escape_string呢?这就是它的用途。

于 2010-07-13T07:24:48.850 回答
0

使用mysql_real_escape_string

于 2010-07-13T07:24:53.637 回答
0

我不知道电子邮件地址中的单引号是否有效,但请查看此(您的)行:

$query = mysql_query("INSERT INTO addresses (lid, email_addresses) VALUES ('$lid', '$clean_value')");

尝试以这种方式使用它(盖子是字符串吗?):

$query = mysql_query("INSERT INTO addresses (lid, email_addresses) VALUES (".$lid.",\"". mysql_real_escape_string($data[$c])."\")");
于 2010-07-13T07:27:19.633 回答