3

我有大量从 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 中运行了完全相同的查询,但那里没有收到错误消息。

4

2 回答 2

2

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

我在调用require_once('connect.php'),但这是我在代码中第二次使用require_once,所以 PHP 没有拉入连接。

更改require_once为 require 为我解决了这个问题。

于 2011-05-22T23:04:55.163 回答
0

我以前从未尝试过LOAD INFILEfrom php,但一个快速的谷歌想出了函数mysqli_set_local_infile_handler()。也许示例/评论可能会有所帮助?

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

infile_handler 将返回插入的行数。

于 2011-01-13T15:11:14.647 回答