我有大量的数据是从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中运行完全相同的查询,但我没有收到错误消息。
答案 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将返回插入的行数。