在 PHP 開發中,獲取剛執行 INSERT 操作產生的自增 ID 是非常常見的需求,例如發布文章後需要立即獲取文章 ID 以便跳轉或關聯操作。本文將詳細介紹 mysql_insert_id() 函數的用法、注意事項及實戰範例,幫助開發者正確高效地獲取最新插入記錄的 ID。
mysql_insert_id() 專門用於返回上一步 INSERT 操作中產生的 AUTO_INCREMENT ID 值。這是獲取最新插入記錄 ID 的標準方法。
mysql_insert_id(resource $connection = null): int
參數說明:
connection(可選):指定 MySQL 連接資源。若省略,則使用上一次打開的連接。返回值: 成功返回自增 ID(整數);若上一條查詢未產生自增 ID,則返回 0。
<?php
// 1. 建立資料庫連接
$conn = mysqli_connect("localhost", "username", "password", "database_name");
if (!$conn) {
die("連接失敗: " . mysqli_connect_error());
}
// 2. 執行插入操作
$sql = "INSERT INTO articles (title, content, author) VALUES ('PHP 教學', '內容...', '張三')";
if (mysqli_query($conn, $sql)) {
// 3. 緊接著獲取自增 ID
$new_id = mysqli_insert_id($conn);
echo "新文章已發布,ID 為: " . $new_id;
// 此處可進行後續操作,如跳轉至文章頁面 header("Location: article.php?id=$new_id");
} else {
echo "發布失敗: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
$pdo->lastInsertId(),用法類似但更安全、支援預處理語句。mysql_insert_id()(或其 mysqli/PDO 對應版本)是 PHP 中獲取最新自增 ID 的正統、安全且高效的方法。牢記「緊跟 INSERT 執行」這一核心原則,即可在各類業務場景中可靠地獲取新記錄標識,支撐後續的業務邏輯流轉。