Một lý do khác khiến bạn nhận được 0 hàng bị ảnh hưởng là nếu UPDATE
câu lệnh không khớp với hàng nào. Ví dụ:
UPDATE MyTable SET field = 'content' WHERE id = 1234;
Cung cấp 0 hàng bị ảnh hưởng nếu không có hàng nào tồn tại với id = 1234
. Đây cũng không phải là lỗi mà chỉ là UPDATE
điều đó đã xảy ra không khớp với hàng nào.
Cách để phát hiện trường hợp này là sử dụng SELECT
để xác minh rằng có một hàng như vậy. Nếu bạn có thể xác nhận hàng tồn tại, nhưng UPDATE
cho biết nó ảnh hưởng đến 0 hàng, sau đó bạn biết rằng các giá trị bạn đã cố gắng thay đổi trên thực tế là các hàng đã có trong cơ sở dữ liệu.
SELECT COUNT(*) FROM MyTable WHERE id = 1234;
Nhưng sự phân biệt có thể không quan trọng. Bạn có thể báo lỗi nếu mysql_error()
cho biết có một, như @BoltClock đề xuất. * Nếu không có lỗi, bạn chỉ có thể báo cáo "không có thay đổi" cho người dùng.