PHP VÀ MYSQL
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 06: Lấy ID vừa insert bằng PHP

Thông thường khi thiết kế CSDL cho các hệ thống website thì khóa chính ta hay sử dụng tăng tự động (auto_increment), vì vậy lúc thêm dữ liệu ta không cần phải giá trị ID khóa chính. Như vậy ta không thể biết được khóa chính của record vừa insert là bao nhiêu? Trong MySQL có một câu truy vấn giúp lấy ID vừa insert đó là hàm LAST_INSERT_ID(). Đó là MySQL, còn PHP lấy như thế nào thì ta cùng tìm hiểu nhé.

1. Lấy ID vừa insert bằng PHP

Trong các mô hình  CSDL có mối quan hệ khóa ngoại nên lúc Insert đôi lúc ta cần lấy giá trị khóa chính của field vừa insert để các table con sử dụng làm khóa ngoại. Lúc này ta phải sử dụng các hàm có sẵn trong PHP để giải quyết.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Mỗi thư viện database trong PHP đều cung cấp những hàm và phương thức giúp lấy ID vừa insert (tức là id cuối cùng).

Đối với thư viện MySQLi thì ta có hàm mysqli_insert_id() và thuộc tính insert_id. Còn đối với PDO thì ta có phương thức lastInsertId().

Sau đây là ba ví dụ về cách lấy ID vừa insert.

Trường hợp MySQLi Object-oriented:

// Tạo kết nối
$conn = new mysqli('localhost', 'root', 'vertrigo', 'FreetutsDemo');
 
// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 
 
// Câu SQL Insert
$sql = "INSERT INTO News (title, content) 
        VALUES ('tieu de', 'noi dung')";
 
// Thực hiện thêm record
if ($conn->query($sql) === TRUE) {
    $last_id = $conn->insert_id;
    echo "Thêm record thành công có ID là $last_id";
} else {
    echo "Lỗi: " . $sql . "<br>" . $conn->error;
}
 
// Ngắt kết nối
$conn->close();

Trường hợp MySQLi Procedural:

// Tạo kết nối
$conn = mysqli_connect('localhost', 'root', 'vertrigo', 'FreetutsDemo');
 
// Kiểm tra kết nối
if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}
 
// Câu SQL Insert
$sql = "INSERT INTO News (title, content) 
        VALUES ('tieu de', 'noi dung')";
 
// Thực hiện thêm record
if (mysqli_query($conn, $sql)) {
    $last_id = mysqli_insert_id($conn);
    echo "Thêm record thành công có ID là $last_id";
} else {
    echo "Lỗi: " . $sql . "<br>" . mysqli_error($conn);
}
 
// Ngắt kết nối
mysqli_close($conn);

Trường hợp PDO:

try {
    // Tạo kết nối
    $conn = new PDO("mysql:host=localhost;dbname=FreetutsDemo", 'root', 'vertrigo');
     
    // Cấu hình exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
     
    // Câu SQL Insert
    $sql = "INSERT INTO News (title, content) 
            VALUES ('tieu de', 'noi dung')";
 
    // Thực hiện thêm record
    $conn->exec($sql);
    
    $last_id = $conn->lastInsertId();
    
    echo "Thêm record thành công có ID là $last_id";
} 
catch (PDOException $e) {
    echo $e->getMessage();
}
 
// Ngắt kết nối
$conn = null;

2. Lời kết

Trên là ba ví dụ điển hình về cách lấy ID auto_increment vừa Insert, bài tiếp theo chúng ta sẽ tìm hiểu cách thực hiện nhiều câu truy vấn cùng lúc bằng PHP.

Tổng hợp dữ liệu trong bài:

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top