PHP CSV 到 Mysql 脚本 - 处理特殊字符

标签 php mysql csv

我有以下脚本,可将数据从 CSV 文件上传到我的数据库。

当 CSV 中的某个字段包含撇号 (') 时,就会出现问题

来自 CSV 的示例数据:

"12345","John","Smith","john.smith@gmail.com","Company Name"
"12346","Joe","Blogg","joe.blogg@gmail.com","Company's Name"

我正在使用的代码:

<?
$link = mysql_connect("localhost", "######", "######") or die("Could not connect: ".mysql_error());
$db = mysql_select_db("######") or die(mysql_error());

$row = 1;
$handle = fopen ("file.csv","r");

while ($data = fgetcsv ($handle, 1000, ",")) {
   $query = "INSERT INTO suppliers(`regid`, `firstname`, `lastname`, `email`, `company`) VALUES('".$data[0]."', '".$data[1]."', '".$data[2]."', '".$data[3]."', '".$data[4]."') ON DUPLICATE KEY UPDATE REGID='".$data[0]."', firstname='".$data[1]."', lastname='".$data[2]."', email= '".$data[3]."', company= '".$data[4]."'";
   $result = mysql_query($query) or die("Invalid query: " . mysql_error().__LINE__.__FILE__);
   $row++;
}
fclose ($handle);
?>

有人可以提出解决方案来解决这个问题吗?

非常感谢

最佳答案

最好的解决方案是升级到 PDO 或 mysqli,并利用它们的参数化查询。

如果不能,您应该在将数据插入查询之前转义数据:

while ($data = fgetcsv($handle, 1000, ",")) {
    $data = array_map('mysql_real_escape_string', $data);
    $query = "INSERT INTO suppliers(`regid`, `firstname`, `lastname`, `email`, `company`) VALUES('".$data[0]."', '".$data[1]."', '".$data[2]."', '".$data[3]."', '".$data[4]."') ON DUPLICATE KEY UPDATE REGID='".$data[0]."', firstname='".$data[1]."', lastname='".$data[2]."', email= '".$data[3]."', company= '".$data[4]."'";
    $result = mysql_query($query) or die("Invalid query: " . mysql_error().__LINE__.__FILE__);
    $row++;
}

您应该始终对任何用户提供的数据使用mysql_real_escape_string,以防止 SQL 注入(inject)或处理此类语法问题。

关于PHP CSV 到 Mysql 脚本 - 处理特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965125/

相关文章:

csv - 通过 Apache-Spark 从 AWS S3 加载数据

php - 如何向搜索引擎显示 HTML 页面而不是 Flash

php - mysqli INSERT异常

mysql - 选择 column_a 上最大的 2 行,其中 column_b=1

javascript - 将 JSP 值传递给 javascript

python - 使用谷歌应用引擎上传和解析 csv 文件

javascript - Grails 使用 d3.js 加载大 csv 文件时出错

php - Css 和 php 布局问题

PHP无法写入MySQL数据库

javascript - 使用 PHP 和 AJAX 的 Mysql UPDATE,无法更新数据库