Tôi đang cố gắng lấy số hàng bị ảnh hưởng trong truy vấn cập nhật mysql đơn giản. Tuy nhiên, khi tôi chạy mã này dưới đây, mysql_affected_rows() luôn bằng 0. Không có vấn đề nếu foo = 1 đã được (trong trường hợp hàm phải chính xác trả về 0, vì không có hàng nào được thay đổi) hoặc nếu foo hiện bằng số nguyên khác (trong trường hợp này hàm sẽ trả về 1).mysql_affected_rows() trả về 0 cho câu lệnh UPDATE ngay cả khi cập nhật thực sự xảy ra
$updateQuery = "UPDATE myTable SET foo=1 WHERE bar=2";
mysql_query($updateQuery);
if (mysql_affected_rows() > 0) {
echo "affected!";
}
else {
echo "not affected"; // always prints not affected
}
Tuyên bố UPDATE hoạt động. INT được thay đổi trong cơ sở dữ liệu của tôi. Tôi cũng đã kiểm tra lại rằng kết nối cơ sở dữ liệu không bị đóng trước hoặc bất cứ điều gì sôi nổi. Hãy nhớ rằng, mysql_affected_rows không nhất thiết yêu cầu bạn chuyển một mã định danh liên kết kết nối, mặc dù tôi cũng đã thử nó.
Chi tiết về hàm: mysql_affected_rows
Bất kỳ ý tưởng nào?
bạn có chắc kỷ lục đang được cập nhật? Hãy chắc chắn rằng bạn đặt foo bằng một cái gì đó khác hơn 1 trước khi bạn chạy thử nghiệm. – northpole
Bất kỳ cơ hội nào, trang của bạn có thể được gọi hai lần, giống như quy tắc viết lại không? Điều này sẽ làm cho dữ liệu được cập nhật lần đầu tiên, và sau đó không phải là lần thứ hai khi bạn thấy kết quả cuối cùng ... Sẽ không làm tổn thương để kiểm tra nhật ký máy chủ web của bạn. –
Bạn đã xác nhận rằng nó thực sự trả lại 0 và không phải là giá trị âm? – Jodaka