這個例子缺少 multi_query 中的 insert_id。以下是我的例子
假設你在 mysql 中有一個新的 test_db,像這樣
建立資料庫,如果不存在則建立 test_db;
使用 test_db;
建立表格 user_info (_id serial, name varchar(100) not null);
建立表格 house_info (_id serial, address varchar(100) not null);
然後你執行一個像這樣的 php 檔案
<?php
define('SERVER', '127.0.01');
define('MYSQL_USER', 'your_user_name');
define('MYSQL_PASSWORD', 'your_password');
$db = new mysqli(SERVER, MYSQL_USER, MYSQL_PASSWORD, "test_db", 3306);
if ($db->connect_errno)
echo "建立資料庫失敗,錯誤訊息:", $db->connect_error;
else {
$sql = "insert into user_info "
. "(name) values "
. "('owen'), ('john'), ('lily')";
if (!$result = $db->query($sql))
echo "新增資料失敗,錯誤訊息:", $db->error;
else
echo "此查詢新增的最後一筆 ID 為 ", $db->insert_id, "\n";
$sql = "insert into user_info"
. "(name) values "
. "('jim');";
$sql .= "insert into house_info "
. "(address) values "
. "('shenyang')";
if (!$db->multi_query($sql))
echo "使用 multi_query 新增資料失敗,錯誤訊息:", $db->error;
else {
echo "第一次 multi_query 新增的最後一筆 ID 為 ", $db->insert_id, "\n";
if ($db->more_results() && $db->next_result())
echo "第二次 multi_query 新增的最後一筆 ID 為 ", $db->insert_id, "\n";
else
echo "使用 multi_query 新增資料失敗,第二個查詢錯誤訊息:", $db->error;
}
$db->close();
}
?>
您會得到如下輸出:
此查詢新增的最後一筆 ID 為 1
第一次 multi_query 新增的最後一筆 ID 為 4
第二次 multi_query 新增的最後一筆 ID 為 1
結論
1. insert_id 在 multi_query 中有效。
2. 如果一次新增多筆資料,insert_id 會返回 MySQL 使用的第一個 ID。