4 Stimmen

Behandlung von Fehlern und Fortsetzung der Ausführung in einem PHP-Skript

Ich möchte nicht "sterben()", wenn es nur einen kleinen Teil des Skripts betrifft, und ich habe es versucht:

$result = mysql_query($sql) or echo("error with responses");

Es wurde jedoch ein Fehler erzeugt. Wie gebe ich einfach eine Fehlermeldung aus und fahre fort, den Rest des Skripts auszuführen, denn selbst wenn die Verbindung fehlschlägt, sollte der Rest nicht beeinträchtigt werden.

5voto

John Parker Punkte 53226

In Bezug auf den Titel Ihrer ursprünglichen Frage: Sie können es nicht. Der Zweck von die et exit sind, um die Skriptverarbeitung zu beenden. Wenn Sie die Skriptverarbeitung nicht beenden wollen, rufen Sie nicht die o exit .

Um die Ausgabe von Fehlern zu unterdrücken, ist dies mit der Option Fehlerkontrolloperator ( @ ), aber nicht ratsam. (Sie debe Prüfen Sie selbst den Fehlerstatus, wenn Sie auf diese Weise Fehler unterdrücken).

Sie könnten zum Beispiel verwenden:

$result = @mysql_query($sql);
if(is_resource($result)) {
    // The query worked...

}
else {
   // Handle error state, perhaps using mysql_error
}

Nur um das klarzustellen, NIEMALS den Fehlerunterdrücker beiläufig in einen Funktionsaufruf einfügen. Sie MUSS stellen Sie sicher, dass Sie mögliche Fehler selbst korrekt behandeln.

5voto

ceejayoz Punkte 170567
$result = mysql_query($sql);
if(mysql_error()) {
  echo "Error: " . mysql_error();
}

2voto

Arjan Punkte 9518
$result = mysql_query($sql) or print("error with responses");

Echo kann nicht für logische Vergleiche verwendet werden, wie Sie es hier versuchen. Sie sollten stattdessen print verwenden, das wird keine PHP-Fehler verursachen.

1voto

dynamic Punkte 45516

Prüfen Sie den Rückgabetyp von mysql_query

$result = mysql_query($sql);
if ($result===false) {

 echo 'The Query failed';
}

//> Continue

1voto

Nick Punkte 6917

Sie müssen nicht die die als zweiten Funktionsaufruf zu verwenden, wird es einfach als Konvention in fast allen mysql_query Tutorium da draußen.

Alles, was wir tun, ist die Auswertung eines booleschen Ausdrucks. $result = $a OR $b . Wenn der Wert von $a wahr ist, dann führen wir niemals $b weil wir es nicht nötig haben. Wir haben die logischen OR wobei eine Seite des Operators wahr ist, das ist alles, was wir brauchen.

Les sterben() Funktion beendet das Skript sofort mit einer Meldung. Sie können sie durch eine eigene Funktion ersetzen, die eine hübsche Fehlermeldung ausgibt und das Skript fortsetzt, ohne es zu beenden, z. B:

function my_error_function($status) {
    echo "ERROR: $status";
}

$result = mysql_query($sql) or my_error_function("Uhoh.  There was a problem executing $sql.");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X