Php 如何让mysql忽略名称中的特殊字符

Php 如何让mysql忽略名称中的特殊字符,php,mysql,Php,Mysql,我正在尝试将名称以CSV批量导入MYSQL,但在此过程中,有一个特殊字符会停止该操作 名字上方的字符-pérez 有没有办法让MYSQL在上传时忽略这一点? 我的下一步是通过一个网页自动上传,客户只需上传CSV文件并点击提交,就可以解决这些问题 我采纳了小组的建议,将我的表重新创建为UTF8默认值 错误1366:第1行“acct_owner”列的字符串值“\xE9rez”不正确 SQL语句: 我尝试了这个,但我仍然在那个特殊字符上得到了相同的错误,加上现在由于某种原因,我的自动增量列没有增量,

我正在尝试将名称以CSV批量导入MYSQL,但在此过程中,有一个特殊字符会停止该操作

名字上方的字符-pérez

有没有办法让MYSQL在上传时忽略这一点? 我的下一步是通过一个网页自动上传,客户只需上传CSV文件并点击提交,就可以解决这些问题

我采纳了小组的建议,将我的表重新创建为UTF8默认值

错误1366:第1行“acct_owner”列的字符串值“\xE9rez”不正确 SQL语句:


我尝试了这个,但我仍然在那个特殊字符上得到了相同的错误,加上现在由于某种原因,我的自动增量列没有增量,它只是捕获了上一个更新列中的数据,因此所有内容都向左移动。

如果你想插入/加载带有特殊字符的csv数据,你可以这样尝试

LOAD DATA INFILE 'file.csv'
IGNORE INTO TABLE table
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'

为了解决这个问题,我最终重建了我的DB表,然后继续,在提交我的数据之前,我用一些代码在其中循环,以删除我知道会给我带来问题的字符。虽然这可能不是最好的方法,但肯定是我找到的最简单的方法。我最初有一个循环,删除了任何不是标准a-Z或0-9的字符,但我发现这给我带来了我需要看到的其他问题;甚至在我的一些细节中。因此,我只专注于我所知道的破坏MYSQL导入的内容

以下是我使用的代码片段:

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

//Replace all the special characters to avoid any insert errors
$data = preg_replace('/\'/', '', $data);
$data = preg_replace('/é/', 'e', $data);

if($firstRow) { $firstRow = false; }
else {

    $import="INSERT INTO ..... blah blah blah....

这里缺少信息。大容量导入使用的是什么查询,文件使用的是哪个字符集,mysql在决定停止时会告诉您什么?您是否有代码,它是否停止或抛出错误,请提供更多信息。这不应停止数据导入,只需更改它,因为您的列似乎是utf-8的拉丁1 intead。删除此关键字后,您是否能够通过同一命令导入csv数据…当您可以使用编码插入时,为什么要忽略它呢!有什么具体原因吗?