Sven Rautenberg: "mysql_num_rows"-Warning

Beitrag lesen

Moin!

Eine bessere Fehlerbehandlung könnte man mal irgendwo unter einer URL veröffentlichen.
Natürlich mit Berücksichtigung von

  • $bolIsFatal
  • $intDebugModus
  • $bolIsTestSystem (Ich mute Dir mal zu, dass Du erkennst, was da jeweils drin sein soll)

Kein schönes Konzept.

dann könnte man immer schön schreiben

$result=mysql_query($sql, $DB);
if (false===$result) {
   sql_error('mysql', $DB, $bolIsFatal, $bolDebugModus, $bolIsTestSystem);
   # oder, hier auf jeden Fall lohnend, als Objekt
}

Für die Behandlung von Fehlerfällen hat die objektorientierte Welt die Exception erfunden. Die eignet sich sehr gut für einige der von dir angerissenen Aspekte, und auch ohne Objekte - wenngleich das an dieser Stelle bereits deutliche Vorteile versprechen würde.

$bolIsFatal - Exception werfen und nicht fangen. Oder fangen und zum geordneten Skriptabbruch laufen lassen.

$intDebugModus - Logging-Level, oder wie? Wäre Aufgabe im Logger, der angesteuert wird von u.a. gefangenen Exceptions.

$bolIsTestSystem - eher nicht, sowas steckt in der Grundsatzkonfiguration des genutzten Servers. Oder welche Auswirkungen stellst du dir da vor?

Dass sql_error() zusätzlich zu den ganzen notwenigen Informationen auch jedesmal noch die gewählte global gültige Konfiguration übergeben kriegen soll, reduziert die Anwendbarkeit dieser Funktion nochmals deutlich. Sowas holt man sich, wenn schon, dann innerhalb dieser Funktion von den relevanten Stellen ab.

und die Funktion verlinken. Aber vermutlich würde dann gar niemand was lernen, jeder würde das kopieren und die Anfragen mit "verstehe gar nichts" würden noch häufiger. Tortillia ist ja schon bei "mysql_real_escape_string()" ausgestiegen.

Und allein schon diese Diskussion über den "richtigen"[TM] Weg der Fehlerbehandlung beweist, dass dein Ansatz alles andere als praktikabel ist. Es gibt keine Universalfunktion dafür - jede Lösung hat sich in die existierenden Umgebung einzufügen, ohne als Fremdkörper zu wirken. Aber gerade bei solchen individuell programmierten Skripten von Leuten eher mittelmäßiger Wissensbasis wirst du mit so einem pauschalen Ansatz keinen Erfolg haben können.

Oder kräftigen Supportaufwand, weil diese Lösung so viele Fragen aufwirft und nirgends "einfach funktioniert".

- Sven Rautenberg