Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Phân biệt giữa 'không có hàng nào bị ảnh hưởng' và các hàng CẬP NHẬT thành công - đến cùng một giá trị (MySQL và PHP)

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?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thực thi hai truy vấn mysql làm một trong PHP / MYSQL?

  2. DATALENGTH () Tương đương trong MySQL là gì?

  3. Chuỗi đến dấu thời gian trong MySQL

  4. MySQL Workbench:Không thể kết nối với máy chủ MySQL trên lỗi 127.0.0.1 '(10061)

  5. Làm cách nào để sử dụng câu lệnh IF trong truy vấn tham gia MySQL?