使用fgetcsv()在PHP CSV上载中转义撇号时出现问题
我正在通过使用fgetcsv()在PHP CSV上载中转义撇号时出现问题,php,mysql,csv,escaping,apostrophe,Php,Mysql,Csv,Escaping,Apostrophe,我正在通过fgetcsv()将CSV文件中的电子邮件地址上载到MySQL数据库中。我遇到的问题是,我无法逃避包含撇号(或单引号)的电子邮件地址 所以,O'Keefe@aol.com不会变成OKeefe@aol.com 我知道这是应该发生的,但是我一直无法找到一个有效的解决方案来摆脱撇号。有人能帮我吗?这是我的密码: while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) { $num
fgetcsv()
将CSV文件中的电子邮件地址上载到MySQL数据库中。我遇到的问题是,我无法逃避包含撇号(或单引号)的电子邮件地址
所以,O'Keefe@aol.com
不会变成OKeefe@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";
}*/
}
}
…这对我不起作用我不知道你的
cleanse
函数的确切功能,但为什么不使用呢?这就是它的用途。我不知道你的cleanse
函数的确切功能,但为什么不使用呢?这就是它的用途。使用。使用。我不知道电子邮件地址中的单引号是否有效,但请看这一行:
试着这样使用它(盖子是一根绳子吗?)
我不知道电子邮件地址中的单引号是否有效,但请看这一行: 试着这样使用它(盖子是一根绳子吗?)
嗨,helle,电子邮件地址中确实允许使用单引号。我尝试了你的建议,但仍然没有得到转义单引号…*将单引号更改为转义双引号。现在我在mysql数据库上试用了一下,效果很好。。。对不起,我不能为你做更多了。您可能有一些编码问题。此字符串是mysql\u real的精确结果。。。您发布的字符串的名称:OKeefe@aol.com试试mb_detect_encoding()来找出编码。嗯,我试过了,但还是没有成功。使用mb_detect_encoding(),每个电子邮件地址都是ASCII。下面是my cleanse()所做的:preg_replace('/[^(\x20-\x7F)]*/','$str);嗨,helle,电子邮件地址中确实允许使用单引号。我尝试了你的建议,但仍然没有得到转义单引号…*将单引号更改为转义双引号。现在我在mysql数据库上试用了一下,效果很好。。。对不起,我不能为你做更多了。您可能有一些编码问题。此字符串是mysql\u real的精确结果。。。您发布的字符串的名称:OKeefe@aol.com试试mb_detect_encoding()来找出编码。嗯,我试过了,但还是没有成功。使用mb_detect_encoding(),每个电子邮件地址都是ASCII。下面是my cleanse()所做的:preg_replace('/[^(\x20-\x7F)]*/','$str);Hi Sjoerd-我尝试使用mysql“U real”escape”字符串,但在单个quoteHi Sjoerd上仍然没有反斜杠-我尝试使用mysql“U real”escape”字符串,在单个quoteMy cleanse函数上仍然没有反斜杠。如果您的函数删除了非ASCII字符,然后,剩余的单引号应以这种方式转义。您确定这不是一个特殊字符(可能是从Word粘贴的)?我已经测试过了,它应该可以工作:
echomsql\u real\u escape\u string(“O”Keefe@aol.com"); // 哦Keefe@aol.com
My Clean函数从电子邮件地址中删除任何非ASCII字符如果您的函数删除了非ASCII字符,则剩余的单引号应以这种方式转义。您确定这不是一个特殊字符(可能是从Word粘贴的)?我已经测试过了,它应该可以工作:echomsql\u real\u escape\u string(“O”Keefe@aol.com"); // 哦Keefe@aol.com
仔细检查您实际访问的SQL语句(通过validEmail()函数)您应该使用mysql\u real\u转义字符串,并确保您实际连接到数据库。仔细检查您实际访问的SQL语句(通过validEmail()函数)您应该使用mysql\u real\u转义字符串,并确保您实际连接到数据库。
$query = mysql_query("INSERT INTO addresses (lid, email_addresses) VALUES ('$lid', \"". mysql_real_escape_string($clean_value) ."\")");
$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])."\")");