mysqli_query返回false,错误代码为0,但查询成功

时间:2011-01-13 14:57:46

标签: php mysql codeigniter load-data-infile

我有大量的数据是从PHP脚本生成的,需要插入到数据库中。我尝试了各种不同结果的解决方案,但是当前的解决方案(以及我认为应该是最好的解决方案)是我将数据生成为CSV文件,然后使用以下查询将其插入数据库:

LOAD DATA LOCAL INFILE 'myfile.csv' INTO TABLE t1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'"

我正在使用CodeIgniter作为PHP框架,并且在执行查询后我被重定向到只显示

的错误页面
  

发生数据库错误

     

错误号码:0

没有错误消息或任何内容。

我已经逐步完成了代码,但我能找到的是mysqli_query()返回false,稍后mysqli_errno()返回0而mysqli_error()返回一个空字符串。

但是,查询实际上已经成功,当我查看数据库时,我可以看到CSV文件中的所有数据都已成功插入。这种行为是期待的吗?如果是这样,我想我必须稍微破解CodeIgniter代码,或者直接调用mysqli_query()而不是通过框架。

我也在MySQL Workbench中运行完全相同的查询,但我没有收到错误消息。

2 个答案:

答案 0 :(得分:2)

当我意识到我没有连接到数据库时,我遇到了完全相同的问题。

我正在调用require_once('connect.php'),但这是代码中第二次使用require_once,因此PHP没有提供连接。

更改require_once以要求我解决此问题。

答案 1 :(得分:0)

我以前从未尝试过来自php的LOAD INFILE,但快速谷歌提出了mysqli_set_local_infile_handler()这个功能。也许这些例子/评论可能会有所帮助吗?

编辑:我的理论是查询期望多行返回值,并且连接不返回任何数字。因此,当MySQL的查询成功时,PHP需要一个> 0但是没有得到它。因此它报告失败,没有错误消息。

infile_handler将返回插入的行数。