Mysqli_insert_id là gì

answer

259

Mysqli_insert_id là gì

$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db'); mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')"); $id = mysqli_insert_id($link);

Thấy chưa mysqli_insert_id().

Dù bạn làm gì, đừng chèn và sau đó thực hiện dấu " SELECT MAX(id) FROM mytable". Giống như bạn nói, đó là một điều kiện của cuộc đua và không cần thiết. mysqli_insert_id()đã có chức năng này.

259 hữu ích 5 bình luận chia sẻ

answer

40

Mysqli_insert_id là gì

Hàm MySQL LAST_INSERT_ID()thực hiện đúng những gì bạn cần: nó truy xuất id đã được chèn trong phiên này . Vì vậy, nó là an toàn để sử dụng, ngay cả khi có các quy trình khác (ví dụ: những người khác gọi cùng một tập lệnh chính xác) chèn các giá trị vào cùng một bảng.

Hàm PHP mysql_insert_id()thực hiện tương tự như khi gọi SELECT LAST_INSERT_ID()với mysql_query().

40 hữu ích 1 bình luận chia sẻ

answer

29

Mysqli_insert_id là gì

Đối với trang web của PHP, mysql_insert_id hiện không được dùng nữa và chúng ta phải sử dụng PDO hoặc MySQLi (Xem câu trả lời của @ Luke cho MySQLi). Để thực hiện việc này với PDO, hãy tiến hành như sau:

$db = new PDO('mysql:dbname=database;host=localhost', 'user', 'pass'); $statement = $db->prepare('INSERT INTO people(name, city) VALUES(:name, :city)'); $statement->execute([':name' => 'Bob', ':city' => 'Montreal']); echo $db->lastInsertId();

29 hữu ích 1 bình luận chia sẻ

answer

22

Mysqli_insert_id là gì

Như @NaturalBornCamper đã nói, mysql_insert_id hiện không được dùng nữa và không nên sử dụng. Các tùy chọn bây giờ là sử dụng PDO hoặc mysqli. NaturalBornCamper đã giải thích PDO trong câu trả lời của anh ấy, vì vậy tôi sẽ chỉ cách thực hiện điều đó với MySQLi ( MySQL Cải tiến ) bằng cách sử dụng mysqli_insert_id .

// First, connect to your database with the usual info... $db = new mysqli($hostname, $username, $password, $databaseName); // Let's assume we have a table called 'people' which has a column // called 'people_id' which is the PK and is auto-incremented... $db->query("INSERT INTO people (people_name) VALUES ('Mr. X')"); // We've now entered in a new row, which has automatically been // given a new people_id. We can get it simply with: $lastInsertedPeopleId = $db->insert_id; // OR $lastInsertedPeopleId = mysqli_insert_id($db);

Xem tài liệu PHP để biết thêm ví dụ: http://php.net/manual/en/mysqli.insert-id.php

22 hữu ích 1 bình luận chia sẻ

answer

7

Mysqli_insert_id là gì

Tôi chỉ muốn thêm một chi tiết nhỏ liên quan đến lastInsertId();

Khi nhập nhiều hơn một hàng cùng lúc, nó không trả về Id cuối cùng mà là Id đầu tiên của tập hợp các lần chèn cuối cùng.

Hãy xem xét ví dụ sau

$sql = 'INSERT INTO my_table (varNumb,userid) VALUES (1, :userid), (2, :userid)'; $sql->addNewNames = $db->prepare($sql); addNewNames->execute(array(':userid' => $userid)); echo $db->lastInsertId();

Điều gì xảy ra ở đây là tôi đẩy vào my_tablehai hàng mới. Id của bảng được tăng tự động. Ở đây, đối với cùng một người dùng, tôi thêm hai hàng với một hàng khác varNumb.

Giá trị được lặp lại ở cuối sẽ bằng id của hàng varNumb=1, có nghĩa là không phải id của hàng cuối cùng , mà là id của hàng đầu tiên đã được thêm vào trong yêu cầu cuối cùng.

7 hữu ích 1 bình luận chia sẻ

answer

1

Mysqli_insert_id là gì

Một ví dụ.

$query_new = "INSERT INTO students(courseid, coursename) VALUES ('', ?)"; $query_new = $databaseConnection->prepare($query_new); $query_new->bind_param('s', $_POST['coursename']); $query_new->execute(); $course_id = $query_new->insert_id; $query_new->close();

Dòng mã $course_id = $query_new->insert_id;sẽ hiển thị ID của hàng được chèn cuối cùng. Hi vọng điêu nay co ich.

1 hữu ích 0 bình luận chia sẻ

answer

1

Mysqli_insert_id là gì

Hãy thử như thế này, bạn có thể nhận được câu trả lời:

Hãy xem các liên kết sau:

http://www.w3schools.com/php/func_mysqli_insert_id.asp

http://php.net/manual/en/ Chức năng.mysql-insert-id.php

Cũng xin lưu ý rằng tiện ích mở rộng này không được chấp nhận trong PHP 5.5 và bị xóa trong PHP 7.0

1 hữu ích 0 bình luận chia sẻ

answer

1

Mysqli_insert_id là gì

Tôi đã tìm thấy câu trả lời trong liên kết trên http://php.net/manual/en/ Chức năng.mysql-insert-id.php

Câu trả lời là:

mysql_query("INSERT INTO tablename (columnname) values ('$value')"); echo $Id=mysql_insert_id();

1 hữu ích 1 bình luận chia sẻ

answer

0

Mysqli_insert_id là gì

Hãy thử điều này ... nó đã làm việc cho tôi!

$sql = "INSERT INTO tablename (row_name) VALUES('$row_value')"; if (mysqli_query($conn, $sql)) { $last_id = mysqli_insert_id($conn); $msg1 = "New record created successfully. Last inserted ID is: " . $last_id; } else { $msg_error = "Error: " . $sql . "
" . mysqli_error($conn); }

0 hữu ích 0 bình luận chia sẻ

answer

-1

Mysqli_insert_id là gì

Một câu trả lời có thể khác sẽ là:

Khi bạn xác định bảng, với các cột và dữ liệu, nó sẽ có. Id cột có thể có thuộc tính AUTO_INCREMENT .

Bằng phương pháp này, bạn không phải lo lắng về id , nó sẽ được tạo tự động .

Ví dụ (lấy từ w3schools )

CREATE TABLE Persons ( ID int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (ID) )

Hy vọng điều này sẽ hữu ích cho ai đó.

Chỉnh sửa: Đây chỉ là phần mà bạn xác định cách tạo ID tự động, để có được ID sau khi tạo, các câu trả lời trước đó đều đúng.

-1 hữu ích 2 bình luận chia sẻ