php – 有没有更好的方法返回多插入的最后插入ID?
发布时间:2020-12-13 16:21:40 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 PHP向我的MySQL数据库添加95个新行并返回新的行ID.执行时间大约需要24秒.如果我超过30秒,PHP将停止执行(默认时间限制为30秒). 我需要为插入的每一行返回行ID,以便我可以使用它来安装相关数据. 我目前的解决方案是: /* snippets from my class ob
我正在使用
PHP向我的MySQL数据库添加95个新行并返回新的行ID.执行时间大约需要24秒.如果我超过30秒,PHP将停止执行(默认时间限制为30秒).
我需要为插入的每一行返回行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(); } 为了减少插入时间,我希望我可以在一个查询中插入多行
他们建议的解决方案是创建另一个表并插入新的ID,然后我可以通过最后的select语句获取新的id. 有没有人研究类似的解决方案?关于如何使这个时间更有效的任何建议? 解决方法
这是我以前在这种情况下使用的技巧:
$query = "INSERT INTO my_table (name,colour) VALUES"; $i = 0; foreach( $rows as $row ) { if( $i ) $query .= ','; $query .= " ( $row[ 'name' ],IF( @id$i := LAST_INSERT_ID(),$row[ 'colour' ],$row[ 'colour' ] ) )"; ++$i; } $result = $this->db->exec( $query ); 然后有这样的查询来获取ID: SELECT @id1,@id2,@id3,... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |