Lỗi nghiêm trọng không phải trong MySQL; thông báo chỉ mục bị thiếu là một cảnh báo mức độ nghiêm trọng tương đối thấp.
tử vong lỗi là trong mã PHP của bạn, do ba điều kiện sau:
- mysqli báo cáo một lô cảnh báo, ngay cả trong điều kiện tương đối vô hại.
- Bạn đang ném
mysqli_sql_exception
đối với tất cả các lỗi và cảnh báo domysqli_report(MYSQLI_REPORT_ALL);
dòng. - Mã PHP của bạn không bắt được ngoại lệ đó (tức là nó không nằm trong
try{}
khối bằngcatch(){}
thích hợp khối) và các trường hợp ngoại lệ không cần thiết sẽ gây tử vong.
Bạn không thể làm gì nhiều về câu đầu tiên, như đã đề cập trong câu trả lời khác. Vì vậy, bạn có thể sửa nó bằng cách thay đổi mysqli_report(...)
của mình cài đặt thành MYSQLI_REPORT_STRICT
hoặc MYSQLI_REPORT_OFF
hoặc thực sự là bất kỳ thứ gì khác ngoài MYSQLI_REPORT_ALL
.
(chỉnh sửa:bình luận của w3d bên dưới giải thích lý do và gợi ý bạn có thể sử dụng mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
như một giải pháp thay thế tốt)
Để có các phương pháp hay nhất và kết hợp với điều này, bạn nên sửa nó đúng cách bằng cách sử dụng try{}
và catch(){}
thích hợp trong mã của bạn.