För att varningar ska "flaggas" till PHP naturligt skulle det krävas ändringar av mysql/mysqli-drivrutinen, vilket uppenbarligen ligger utanför denna frågas omfattning. Istället måste du i princip kontrollera varje fråga du gör i databasen för varningar:
$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
}
Uppenbarligen kommer detta att bli fruktansvärt dyrt att applicera i massa, så du kan behöva fundera noga på när och hur varningar kan uppstå (vilket kan leda till att du återställer dem för att eliminera dem).
Som referens, MySQL SHOW WARNINGS
Naturligtvis kan du avstå från den initiala frågan för SELECT @@warning_count
, vilket skulle spara dig en fråga per exekvering, men jag inkluderade den för pedantisk fullständighet.