使用fgetcsv()在PHP CSV上传中避免撇号

时间:2010-07-13 07:21:55

标签: php mysql csv escaping apostrophe

我正在通过fgetcsv()将CSV文件中的电子邮件地址上传到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) ."\")");

......这对我不起作用

3 个答案:

答案 0 :(得分:1)

我不知道您的cleanse函数究竟是做什么的,但为什么不使用mysql_real_escape_string?这就是它的用途。

答案 1 :(得分:0)

答案 2 :(得分: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])."\")");