我們在寫入資料時常常會需要剛 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);
}
}