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