2015-09-07 33 views
1

我正在从批量操作导入.csv文件中的员工数据。有很多领域,如名,姓,电子邮件,联系号码,地址等。PHP脚本中的特殊字符停止执行

数据库中的电子邮件字段是索引/唯一。所以我已经对它进行了验证。

但我的问题是,当某些行包含特殊字符,如matiné[email protected]或dé[email protected][焦点]。

这将停止php脚本执行意外没有错误日志。我也经历了Apache错误日志/ PHP错误日志,但没有错误。请帮我防止这种情况。

我也尝试将字符编码方案设置为UTF-8或者Westorn-ISO-800等,但这不起作用。

代码片段:

`     $firstname = $sd[0]; 
        if ($firstname != '' || !empty($firstname)) { 

         $lastname = $sd[1]; 
         $email = $sd[2]; 
         if ($sd[3] != '' && $sd[3] != NULL) {         
          $password = md5($sd[3]); 
         } 
         $contactno = $sd[4]; 
         $internalextension = $sd[5]; 
         $companyid = $this->session->userdata('companyid'); 

         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
          return array("status" => FALSE, "message" => "Error while Importing Employee. Please Check Your .csv " 
           . "file; <br/> Your file contains Invalid Email Id at Line number" . ($count + 1) . ". Email: $email"); 
         } else { 

          if ($count != 500) { 

           $query = $query . "(NULL, '" . $firstname . "', '" . $lastname . "', '" . $email . "', " 
             . "'" . $password . "', '" . $salt . "', 1, '" . $contactno . "'," 
             . "'" . $internalextension . "', 4, " . $companyid . ", '" . my_datenow() . "'),"; 
          } else { 

           $query = $query . "(NULL, '" . $firstname . "', '" . $lastname . "', '" . $email . "', " 
             . "'" . $password . "', '" . $salt . "', 1, '" . $contactno . "'," 
             . "'" . $internalextension . "', 4, " . $companyid . ", '" . my_datenow() . "');"; 
           echo $query; 
          } 
         } 
        } else { 
         return array("status" => FALSE, "message" => "Error while Importing Employee. Please Check Your .csv file; First Name should not be blank."); 
        }` 
+1

还将“排序规则”设置为“utf8_general_ci”,以便在数据库中逃脱电子邮件 – Saty

+0

执行数据库操作之前这一切将立即发生。我的意思是先准备查询并立即执行。但准备查询期间发生错误。 – Chintan7027

+0

你可以发布你的准备状态 – Saty

回答

0

您可以使用分配值的变量,例如

$firstname = htmlspecialchars($sd[0]); 

用htmlspecialchars之前用htmlspecialchars() - 转换特殊字符为HTML实体 参考:http://php.net/manual/en/function.htmlspecialchars.php

+0

是的,你是正确的,但只有htmlspecialchars()函数将特殊字符转换为html显示实体,并且将转换后的电子邮件存储在数据库中将会在将来使用电子邮件登录时产生问题。情况并非如此。 – Chintan7027

+0

我认为你可以使用mysql_real_escape_string()函数来转义可能与查询冲突的字符。例如在创建查询时使用mysql_real_escape_string($ email)。试一试 – Saurabh

+0

好的,谢谢,让我试试 – Chintan7027