mysqli_insert_id 取得最後寫入資料的ID

我們在寫入資料時常常會需要剛 Insert 資料的 ID 來與其他的 Table 做關聯
ID 必須要是一個 AUTO_INCREMENT 欄位,不然會取不到資料
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

以下為程式範例:

$sql = "INSERT INTO table_name (column1, column2, column3)
        VALUES ('value1', 'value2', 'value3')";

if (mysqli_query($conn, $sql)) {
    $last_id = mysqli_insert_id($conn);
    echo '剛寫入的資料ID: ' . $last_id;
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

我則是習慣改寫一個 Insert Function,在寫入時直接回傳 ID
也加了一個 $is_return 的參數來判斷是否要回傳ID
在不需要回傳ID的大量寫入時可以使用

$servername = "localhost";
$username = "username";
$password = "password";

// 建立連線
$conn = mysqli_connect($servername, $username, $password);

// 檢查連線若錯誤顯示訊息
if (!$conn) {
    die("連線失敗: " . mysqli_connect_error()); 
}
$sql = "INSERT INTO table_name (column1, column2, column3)
        VALUES ('value1', 'value2', 'value3')";

$last_id = insert_data($conn,$sql,'Y');
echo '剛寫入的資料ID: '.$last_id;

function insert_data($conn,$sql,$is_return=''){
    if (mysqli_query($conn, $sql)) {
        if($is_return) return mysqli_insert_id($conn);
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。