我试图读取一个大的XML文件并插入数据库中的所有数据。我正在尝试3种不同的场景(我需要帮助第三种):
$this->mysqli->query($sql);
INSERT
添加到$sql
变量中,在循环之后,我使用一个多查询$this->mysqli->multi_query($sql);
一次性插入所有内容。我进行了测试,两种情况都不符合我的喜好:
所以现在我想出了第三种混合解决方案。但它没有按预期工作。它背后的想法是在每200个元素之后创建一个$this->mysqli->muli_query($sql);
调用,然后重新启动该过程。我想我错过了对mysqli-> multi_query函数的正确理解,因为对我来说下面的代码非常有意义。但也许我需要释放/指向/下一个()某些东西?
无论如何:在运行脚本之后,数据库没有完全填满。
如上所述,在我的代码下面:
if ($xmlObj) {
$sql = "";
$i = 1;
foreach ($xmlObj->Response->FeaturesList->Feature as $feature) {
$sid = $feature["ID"];
$sql .= "INSERT INTO ...;";
// Hybrid solution
if (($i % 200) == 0) {
$this->mysqli->multi_query($sql);
$sql = "";
}
$i++;
}
// Hybrid: Update the leftovers
$this->mysqli->multi_query($sql);
}
更新
Mihai添加的选项#4工作正常。我创建了一个INSERT..VALUES(a),(b),(c)
字符串,并使用mysqli->query()
添加了10秒运行并添加了所有元素。感谢
关于multi_query之谜的问题仍然存在!