Một giải pháp đơn giản sẽ là hai truy vấn.
Đầu tiên, hãy chạy truy vấn CHỌN để kiểm tra xem hàng có tồn tại hay không bằng cách sử dụng mysqli_num_rows ().
Sau đó, nếu hàng tồn tại, bạn có thể chạy truy vấn CẬP NHẬT và sử dụng mysqli_affected_rows ().
[CHỈNH SỬA]
... Tôi sẽ đề xuất một giải pháp thay thế tiềm năng cho bất kỳ ai đang tìm kiếm một cuộc gọi. Tôi không biết liệu bạn có quan tâm đến việc thực hiện bất kỳ CHÈN, hay hoàn toàn là CẬP NHẬT. Dưới đây là một số thực phẩm để suy nghĩ:
Từ nhận xét trên cùng @ http://php.net/manual/en/ mysqli.affected-rows.php :
Trên các truy vấn "CHÈN VÀO VÀO CẬP NHẬT KHÓA KÉP", mặc dù người ta có thể mong đợi effect_rows chỉ trả về 0 hoặc 1 mỗi hàng đối với các truy vấn thành công, trên thực tế, nó có thể trả về 2.
Từ hướng dẫn sử dụng Mysql:"Với CẬP NHẬT KHÓA KÉP BẬT, giá trị hàng bị ảnh hưởng trên mỗi hàng là 1 nếu hàng được chèn dưới dạng hàng mới và 2 nếu hàng hiện có được cập nhật."
Xem: http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html
Đây là bảng phân tích tổng mỗi hàng :
+0:một hàng không được cập nhật hoặc chèn (có thể do hàng đã tồn tại, nhưng không có giá trị trường nào thực sự bị thay đổi trong quá trình CẬP NHẬT)
+1:một hàng đã được chèn
+2:một hàng đã được cập nhật
Bạn có thể làm cho nó phù hợp với nhu cầu của bạn không?