2011-07-02 35 views

Trả lời

61

Sau khi gọi phương thức execute() trên PreparedStatement, id của hàng chèn sẽ nằm trong thuộc tính insert_id. Chỉ đọc nó.

$pstm->execute(); 
$pstm->insert_id; 
+0

Nhưng nó sẽ trả về một ID tương ứng và duy nhất cho mỗi chấp hành? Nhận xét hàng đầu trong [tài liệu] (http://php.net/manual/en/mysqli-stmt.insert-id.php#102299) nói rằng bạn nên sử dụng 'mysqli_connection-> insert_id' thay vì' mysqli_stmt-> insert_id' nếu bạn thực hiện cùng một câu lệnh được chuẩn bị vài lần. Nghĩ rằng bạn có thể nhận thức được điều này là đúng hay không. – Cheslab

6
$newid = mysqli_insert_id($mysqli_db); 

$mysqli_db là kết nối cơ sở dữ liệu mysqli của bạn. Theo như tôi biết nó không nên quan trọng mà trên đó cách ou chèn hàng (tuyên bố chuẩn bị hoặc trực tiếp INSERT INTO). mysqli_insert_id() phải trả lại id của hàng được chèn cuối cùng bằng kết nối db này.

Cách khác là thực hiện một truy vấn khác như SELECT LAST_INSERT_ID();.

+0

Điều đáng nói đến phương pháp này cũng hoạt động trong giao dịch (không rõ ràng). – Itako

+0

Làm việc với 'PreparedStatement'? Tôi nhận được id doint này: '$ pstm-> execute();' và sau đó, thuộc tính 'insert_id' có id:' $ mysqli-> insert_id; ' –

Các vấn đề liên quan