Chèn ID cuối cùng trong MySQL

“Hãy hòa nhã với những kẻ dở hơi. Ai biết được ngày sau bạn có thể phải làm việc cho một kẻ như vậy.”

Bill Gates

Microsoft

Trong bài hướng dẫn tự học lập trình PHP và MySQL này, bạn sẽ tìm hiểu cách lấy ID duy nhất của hàng được chèn cuối cùng từ bảng cơ sở dữ liệu MySQL bằng PHP.

Hướng dẫn cách lấy ID cuối cùng của bảng CSDL trong MySQL
Hướng dẫn cách lấy ID cuối cùng của bảng CSDL trong MySQL

Cách lấy ID của hàng được chèn cuối cùng

Trong bài hướng dẫn Insert trong MySQL, bạn đã học rằng MySQL tự động tạo một ID duy nhất cho cột AUTO_INCREMENT mỗi khi bạn chèn một bản ghi hoặc hàng mới vào bảng.

Tuy nhiên, có một số tình huống bạn cần lấy ID được tạo tự động đó để chèn nó vào bảng thứ hai.

Trong những tình huống này, bạn có thể sử dụng hàm mysqli_insert_id() của PHP để lấy ID được tạo gần đây nhất, như trong ví dụ bên dưới đây:

Trong ví dụ này, chúng ta sẽ sử dụng cùng một bảng mà chúng ta đã tạo trong bài Cách tạo bảng CSDL trong MySQL, có bốn cột id, first_name, last_nameemail, trong đó id là cột khóa chính (primary key) và được đánh dấu bằng AUTO_INCREMENT.

1. Hướng dẫn lấy ID cuối cùng trong CSDL MySQL với MySQLi hướng thủ tục

<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (người dùng 'root' không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($link === false){
    die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
 
// Cố gắng thực hiện câu lệnh INSERT
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', 'ronweasley@mail.com')";
if(mysqli_query($link, $sql)){
    // Lấy ID đã chèn cuối cùng
    $last_id = mysqli_insert_id($link);
    echo "Chèn bản ghi thành công. ID đã chèn cuối cùng là: " . $last_id;
} else{
    echo "ERROR: Không thể thực thi câu lệnh $sql. " . mysqli_error($link);
}
 
// Đóng kết nối
mysqli_close($link);
?>

2. Hướng dẫn lấy ID cuối cùng trong CSDL MySQL với MySQLi hướng đối tượng

<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (người dùng 'root' không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($mysqli === false){
    die("ERROR: Không thể kết nối. " . $mysqli->connect_error);
}
 
// Cố gắng thực hiện câu lệnh INSERT
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', 'ronweasley@mail.com')";
if($mysqli->query($sql) === true){
    // Lấy ID đã chèn cuối cùng
    $last_id = $mysqli->insert_id;
    echo "Chèn bản ghi thành công. ID đã chèn cuối cùng là: " . $last_id;
} else{
    echo "ERROR: Không thể thực thi câu lệnh $sql. " . $mysqli->error;
}
 
// Đóng kết nối
$mysqli->close();
?>

3. Hướng dẫn lấy ID cuối cùng trong CSDL MySQL với PDO

<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (người dùng 'root' không có mật khẩu) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // Thiết lập chế độ PDO error thành ngoại lệ
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Không thể kết nối. " . $e->getMessage());
}
 
// Cố gắng thực hiện câu lệnh INSERT
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', 'ronweasley@mail.com')";    
    $pdo->exec($sql);
    $last_id = $pdo->lastInsertId();
    echo "Chèn bản ghi thành công. ID đã chèn cuối cùng là: " . $last_id;
} catch(PDOException $e){
    die("ERROR: Không thể thực thi câu lệnh $sql. " . $e->getMessage());
}
 
// Đóng kết nối
unset($pdo);
?>

Bạn đã hiểu cách lấy ID cuối cùng trong MySQL chưa?

Mình hướng dẫn bạn cả 3 cách lấy ID cuối cùng trong bảng CSDL MySQL để giúp cho cả người mới bắt đầu có thể hiểu.

Hãy luyện tập vào ghi nhớ 3 cách lấy ID cuối cùng này nhé. Bạn sẽ sử dụng đến rất nhiều đấy.

PHPDev

Có thể bạn muốn xem

Pesudo Element trong CSS

Sử dụng phần tử giả (Pesudo element) trong CSS là một cách để áp dụng các quy tắc CSS cho phần tử không xác định vị trí trong DOM tree.

Pesudo class trong CSS

Bộ chọn lớp giả CSS (Pesudo class Selector) khớp với các thành phần dựa trên một điều kiện bổ sung và không nhất thiết phải được định nghĩa trong DOM tree.

Leave a reply

Please enter your comment!
Please enter your name here