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

PDOStatement ::execute () trả về true nhưng dữ liệu không được cập nhật

Khi execute() trả về true nó có nghĩa là câu lệnh "thành công", nhưng nó không có nghĩa là nó đã thay đổi bất cứ điều gì. Nó chỉ có nghĩa là không có lỗi.

  • Nó có thể đã khớp với không hàng vì các điều kiện trong mệnh đề WHERE. Đó vẫn được coi là một "thành công." Bạn có thể thử một SELECT với cùng một mệnh đề WHERE và tìm nạp kết quả để xác nhận rằng nó khớp với các hàng.

  • Nó có thể đã khớp với một hoặc nhiều hàng, nhưng các giá trị bạn đang đặt đã là giá trị trên các hàng đó. Bạn có thể gọi $sth->rowCount() sau khi bạn thực thi, để tìm hiểu số hàng mà CẬP NHẬT bị ảnh hưởng (con số này có thể ít hơn số hàng mà nó phù hợp).

  • Nếu bạn có nhiều hơn một bản sao của bảng này, bạn nên kiểm tra kỹ xem thay đổi đã được thực hiện trong cơ sở dữ liệu bạn đang đọc chưa. Điều đó xảy ra với tôi đôi khi - tôi quên thay đổi tệp cấu hình ứng dụng và tôi không nhận ra rằng mình đang cập nhật cơ sở dữ liệu sai.

Đây hóa ra là vấn đề - một biến thể ở điểm thứ ba:

  • Nếu bạn làm việc trên nhiều máy chủ, hãy kiểm tra kỹ xem bạn có đang kiểm tra các thay đổi trên đúng máy chủ mysql 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. MySQL5.6 bị mắc kẹt trong quá trình cố gắng khởi động dịch vụ

  2. phần còn lại mật khẩu gốc mysql

  3. MYSQL GROUP BY và ORDER BY không hoạt động cùng nhau như mong đợi

  4. mysql:Nhận bản ghi cuộc trò chuyện cuối cùng của người dùng

  5. MySQL trả về 1 hình ảnh cho mỗi sản phẩm