我使用PHP将95个新行添加到我的MySQL数据库并返回新的行ID。执行时间大约需要24秒。如果我超过30秒,PHP将停止执行(默认时间限制为30秒)。有没有更好的方法来返回多插入最后插入的ID?
我需要返回插入的每行的行ID,以便我可以使用它来安装关联的数据。
我目前的解决办法是这样的:
/* snippets from my class objects to illustrate my code */
// This foreach takes 24 seconds on just 95 rows
foreach($list as $row) {
$id = $this->importRows($sid,$table)
array_push($id_list,$id);
}
/* PDO insertion */
protected function importRows($row) {
$sql = "INSERT INTO my_table (name, colour)
VALUES $row['name'], $row['colour']";
$result = $this->db->exec($sql);
return $this->db->lastInsertId();
}
为了减少insettion时间,我希望我可以在一个查询 插入多行根据MySQL(向下滚动到红色林德和单词重要)它说:
如果您将使用一个INSERT语句多行, LAST_INSERT_ID()返回第一个插入的 仅排产生的价值。
他们建议的解决方案是创建另一个表并在其中插入新ID,然后我可以通过选择语句在最后获取新ID。
有没有人在类似的解决方案?任何关于如何让这一点更有效的建议?
有使用内置的方法PHP获取最后插入的id http://php.net/manual/en/function的例子.mysql-insert-id.php –
@Sumair Zafar,这就是'$ this-> db-> lastInsertId()'使用PDO。 – Steven