Đối với các cảnh báo được "gắn cờ" đối với PHP nguyên bản sẽ yêu cầu các thay đổi đối với trình điều khiển mysql / mysqli, điều này rõ ràng nằm ngoài phạm vi của câu hỏi này. Thay vào đó, về cơ bản bạn sẽ phải kiểm tra mọi truy vấn bạn thực hiện trên cơ sở dữ liệu để biết các cảnh báo:
$warningCountResult = mysql_query("SELECT @@warning_count");
if ($warningCountResult) {
$warningCount = mysql_fetch_row($warningCountResult );
if ($warningCount[0] > 0) {
//Have warnings
$warningDetailResult = mysql_query("SHOW WARNINGS");
if ($warningDetailResult ) {
while ($warning = mysql_fetch_assoc($warningDetailResult) {
//Process it
}
}
}//Else no warnings
}
Rõ ràng là việc áp dụng en-mass sẽ rất tốn kém, vì vậy bạn có thể cần phải suy nghĩ cẩn thận về thời điểm và cách thức các cảnh báo có thể xuất hiện (điều này có thể khiến bạn phải tái cấu trúc để loại bỏ chúng).
Để tham khảo, hãy CẢNH BÁO HIỂN THỊ CỦA MySQL
Tất nhiên, bạn có thể phân phối với truy vấn ban đầu cho SELECT @@warning_count
, điều này sẽ giúp bạn tiết kiệm một truy vấn cho mỗi lần thực thi, nhưng tôi đã đưa nó vào để hoàn thiện về mặt ngữ nghĩa.