Học câu lệnh Insert MySQL trả về Id bằng PHP

Học câu lệnh Insert MySQL trả về Id bằng PHP là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Học câu lệnh Insert MySQL trả về Id bằng PHP sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và PHP nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

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.

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', 'hoidapcode.com');
  
// 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', 'hoidapcode.com');
  
// 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=hoidapcode.com", '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.

Hy vọng với bài viết về Học câu lệnh Insert MySQL trả về Id bằng PHP đã giải đáp giúp bạn phần nào về kiến thức lập trình PHP. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!