Tach!
Gibt es auch das Szenario, dass die Verbindung zwar hergestellt wird, aber ein bestimmtes Feld nicht angesprochen werden kann?
Ja, theoretisch. Praktisch hat man die Berechtigungen korrekt gesetzt und geprüft. Eher relevant dürfte werden, dass irgendeine außergewöhnliche Randbedingung zum Abbruch der Query führt, wie Speichermangel oder dass der Backup-Mechanismus just in dem Augenblick den Server angehalten hat.
Wie reagiert man darauf? Greift hier noch mysqli_connect_errno()?
Nein. Man wertet die Rückgabewerte der verwendeten Funktionen aus. Ein sinnvolles spezielles Reagieren kann es nur geben, wenn man einen bestimmten Fehler eingeplant hat. Ansonsten kann man nur allgemein reagieren und das Script mit einer Tröstmeldung in Richtung Anwender geordnet beenden. Gegebenenfalls kann man Alternativen vorschlagen. Nicht unbedingt die Konkurrenz, sondern was der Anwender machen kann, um doch noch zu seinem (und unserem) Ziel zu gelangen.
Aktuell speichere ich in meinem CMS fehler (401,403,404,410; 500 geht nicht, weil da nichts mehr geht) in der Datenbank,
500 geht generell schon, nur wäre es sicher sinnvoll, das 500-er ErrorDocument mit einer anderen Script-Sprache abzuarbeiten, die dann eine Mail sendet. Dann weiß man wenigstens, dass sowas aufgetreten ist und kann sich die zugehörige Meldung im ErrorLog anschauen, wenn man darauf zugreifen darf.
kann es hier passieren, dass obwohl die Verbindung Ok ist, dass Feld für die Fehler in der Datenbank nicht angesprochen werden kann?
Siehe oben.
Wo soll ich dann diese Fehler speichern, wohl im Errorlog?
Du musst sie nicht unbedingt speichern. Eine Mail kann auch die Fehler-Information zum Admin befördern.
Aber woran erkenne ich, dass dieses eine Feld nicht angesprochen werden konnte, und daher das Script als Alternative den Fehler im Error_log speichern soll?
Du bekommst den konkreten Fehlermeldungstext wie üblich durch Auswerten der bekannten Informationsquellen. Im Falle von MySQLi ist es mysqli::$error oder mysqli_stmt::$error. PHP-Fehler und deren Texte bekommt man über einen eigenen Error-Handler.
dedlfix.