2013-02-21 57 views
0

我遇到了使用fsgetcsv将文本文件导入数据库的问题,这些问题源于名称中带有单引号字符的一些字段(爱尔兰数据库),字段被^字符转义并且该位工作正常,但它基本上告诉我,当我的SQL语法到达具有'字符的字段时,我有一个错误。fsgetcsv无法用字段中的单引号解析文件

无论如何我可以解决这个问题吗?我尝试了各种组合的转义字符,但无济于事。

使用该工具在phpMyAdmin使用下列用语的工作,并不会造成问题导入文件:

场终止字符:^ 场封闭字符:“ 场逃脱字符:汽车

:\ 一行结束

这里是有问题的行的例子:

4^01^Patrick O'Brien^account Number^7Address^client contact^sales contact^Validity Check on appointment and report to Receiver^21/01/13^^^^^^^^^^^02 

这里是fsgetcsv声明

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

回答

0

当您构建SQL语句以将行插入数据库时​​,请确保已正确转义fsgetcsv函数返回的值。您可以通过使用SQL参数(请参阅How can I prevent SQL injection in PHP?)或使用您正在使用的数据库的内置函数进行转义来完成此操作(请参阅http://www.php.net/manual/en/mysqli.real-escape-string.php)。

+0

这真的很有帮助,我只是简单地更新了插入语句来遵循这个格式,它像一个魅力一样工作。 '“.mysql_real_escape_string($ data [1])。'', 非常感谢:D – Funk247 2013-02-21 13:26:38