1
有没有办法在用mysqli multi_query函数插入多行后获取最后生成的auto_increment ID?PHP MySQLi从multi_query()插入ids()
编辑:
我设法得到它通过添加SELECT LAST_INSERT_ID工作();在多查询中的每个INSERT查询之后,然后使用mysqli_use_result来获取所有ID,并且我认为这是最好的方法。
有没有办法在用mysqli multi_query函数插入多行后获取最后生成的auto_increment ID?PHP MySQLi从multi_query()插入ids()
编辑:
我设法得到它通过添加SELECT LAST_INSERT_ID工作();在多查询中的每个INSERT查询之后,然后使用mysqli_use_result来获取所有ID,并且我认为这是最好的方法。
您可以通过调用MySQLi的每个连续插入语句的next_result()
来获取不同的插入ID。据我所知,只要查询是插入语句或其他不返回结果集的东西,就不必存储任何结果。
$sql = new MySQLi("...");
$query = "INSERT STATEMENT NUMBER ONE;";
$query .= "INSERT STATEMENT NUMBER TWO;";
$query .= "INSERT STATEMENT NUMBER THREE";
$sql->multi_query($query);
// The first insert id will be available at once
$id1 = $sql->insert_id;
// The second needs to be handeled a little differently
$sql->next_result();
$id2 = $sql->insert_id;
// And lastly the third one
$sql->next_result();
$id3 = $sql->insert_id;
你也可以把这个在一个循环中,如果您不确定有多少INSERT语句有:
$ids = array();
do
{
$ids[] = $sql->insert_id;
$sql->next_result();
} while($sql->more_results());
这是未经测试的伪代码(如你可能已经想通),但它应该工作。
你尝试过'mysqli_insert_id'吗? – 2010-10-11 01:16:07
仅返回最后一个ID并非全部 – user453984 2010-10-11 01:17:30
+1用于添加答案 – abel 2010-10-11 10:48:00