2012-05-23 19 views
8

Tôi đang làm biểu mẫu đăng ký với truy vấn SQL INSERT bằng PDO. Sau INSERT này, tôi muốn trích xuất các userid (tăng tự động, khóa chính) vừa được tạo và INSERT nó vào bảng khác (bảng "mã xác nhận")Làm thế nào tôi có thể đảm bảo rằng lastInsertId() của PDO không phải là của một chèn đồng thời khác?

Nhưng làm cách nào để đảm bảo rằng userid này là không phải của người dùng thứ hai đã đăng ký 1/1000 giây sau đó người dùng đầu tiên?

Tôi có nên tìm cách khóa bàn không? Tôi có nên sử dụng giao dịch không?

Trả lời

10

lastInsertId() trả về nhận dạng của hàng cuối cùng chèn trên kết nối đó, vì vậy người dùng đồng thời (với các kết nối khác nhau để các cơ sở dữ liệu) sẽ không can thiệp.

+0

Xin chào, cảm ơn phản hồi của bạn. Sau đó tôi sẽ sử dụng mà không phải lo lắng. Trân trọng – alexx0186

1

Bạn có thể tránh điều này bằng cách chọn một email hoặc một số trường duy nhất. Điều đó sẽ đảm bảo bạn có được id người dùng chính xác.

Ví dụ:

select id from user_table where email = '[email protected]' limit 1; 
+0

Xin chào, tôi muốn sử dụng lastInsertId() nhưng tôi sẽ lưu ý đến bạn. Cảm ơn rất nhiều. – alexx0186

+0

Vâng, không sao cả. Tôi cũng học được điều gì đó mới mẻ. – Gohn67

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