【发布时间】:2018-09-21 16:52:52
【问题描述】:
我正在尝试将包含单引号的 CSV 文件导入到文本中。每次,MySQL 都会给我一个错误。我怎样才能避免这种类型的错误?
这是导致问题的文本之一:
Sam Capra,CIA base à Londres 特工,échappe à l'explosion de son Bureau grâceà un appel de sa femme Lucy。 Mais cette dernière, enceinte, disparaît et Sam est tenu responsable de l'attentat par la CIA。
这是我的 SQL 查询:
$sqlInsert = "INSERT into products_details (`product_title`,`product_price`, `product_image`, `product_gallery`,`product_description`, `meta_value`, `stock`, `weight`, `active`)
values ('" . $column[2] . "','" . $column[21] . "','uploads/" . $column[0] . ".jpg','" . $column[1] . "','" . $column[22] . "','" . $json . "','" . (int)$column[15] . "','" . $column[20] . "','" . (int)$column[23] . "')";
提前感谢您的帮助!
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该通过mysqli 或PDO 使用带有绑定参数的准备好的语句。 This post 有一些很好的例子。应用此技术将解决您所有的引用问题。
-
你的CVS文件下载代码在哪里?您可以编写自己的函数来转义字符串中的引号。
-
你已经在这里得到了一些不好的练习答案,所以不要转义字符串,不要用任何其他字符替换逗号等等。只需使用准备好的语句(按照第一条评论中的链接)
-
@AlexHowansky 是的,我在通过 mysqli 插入之前使用准备好的 :)
-
使用准备好的语句是不够的。您需要使用带有绑定参数的准备好的语句。
标签: php mysql import-csv