Wenn ich ein bisschen Code wie diesen verwende:
$update_result = mysqli_query( $link , $sql_update_login ) or die ('Unable to execute query. '. mysqli_error($link));
Muss es sterben oder kann man danach eine andere Abfrage stellen? Wie eine vorgegebene Funktion, die ein Protokoll des Fehlers in eine andere Tabelle schreibt? Wie zum Beispiel:
$update_result = mysqli_query( $link , $sql_update_login ) or function('$query, $error);
Was sind die anderen Optionen nach ‘oder’? Ich habe es nicht in der Dokumentation gefunden, alle Hinweise sind willkommen.

Ihr gesunder Menschenverstand
Muss es sterben
Ganz im Gegenteil, es sollte nicht or die()
je.
PHP ist eine Sprache mit schlechter Vererbung. Sehr schlechte Vererbung. Und or die()
wobei eine Fehlermeldung eine der schlimmsten Rudimente ist:
- die wirft eine Fehlermeldung aus, die einem potenziellen Angreifer einige Systeminterna offenbart
- Es verwirrt unschuldige Benutzer mit seltsamen Nachrichten und lässt ihnen keine Schnittstelle, mit der sie arbeiten können, sodass sie wahrscheinlich einfach abbrechen würden.
- Es beendet das Skript in der Mitte, sodass möglicherweise ein zerrissenes Design (oder überhaupt kein Design) angezeigt wird (dh eine unvollständige Darstellung der vom Benutzer angeforderten Seite).
- das Skript unwiederbringlich beenden. Während eine ausgelöste Ausnahme abgefangen und ordnungsgemäß behandelt werden kann
die()
gibt Ihnen keinen Hinweis auf die Ort, an dem der Fehler aufgetreten ist. Und in einer relativ großen Anwendung wird es ziemlich schwierig sein, sie zu finden.
Also niemals verwenden die()
mit MySQL-Fehlern, auch für das temporäre Debuggen: Es gibt bessere Wege.
Anstatt manuell nach dem Fehler zu suchen, konfigurieren Sie einfach mysqli so, dass es bei Fehlern Ausnahmen auslöst, indem Sie die folgende Zeile zu Ihrem Verbindungscode hinzufügen
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
und schreiben Sie danach einfach jeden mysqli-Befehl so, wie er ist, ohne irgendwelche or die
oder sonst was:
$result = mysqli_query($link, $sql);
Dieser Code löst im Fehlerfall eine Ausnahme aus und Sie werden somit immer ohne eine einzige Zeile zusätzlichen Codes über jedes Problem informiert.
Eine ausführlichere Erklärung, wie Sie Ihre Fehlerberichterstattungsproduktion fertig, einheitlich und insgesamt sinnvoll machen und gleichzeitig Ihren Code viel sauberer machen, finden Sie in meinem Artikel über PHP-Fehlerberichterstattung.

Mixer
or
ist nur ein Operator (sehr ähnlich zu ||
).
Die or die()
Syntax funktioniert, weil or
Kurzschlüsse, was bedeutet, dass, wenn die erste Aussage wahr ist, True or X
wird immer wahr sein, also X
wird nicht ausgewertet und Ihr Skript nicht die
.
Ja, Sie können nach dem (oder) eine andere Funktion angeben. Folgendes habe ich getestet:
mysqli_query($sel_db,'what!') or some_func(mysqli_error($sel_db));
function some_func($str) {
die("ERROR: ".$str);
}
Es muss nicht sein die()
speziell, aber es muss etwas sein, das das Skript beim Aufrufen anhält exit()
oder die()
, oder etwas, das eine Ausnahme auslöst. Andernfalls fährt das Skript mit dem Rückgabewert dieser Funktion fort (der wahrscheinlich entweder null oder eine Art Junk ist). $update_result
was mit ziemlicher Sicherheit zu Problemen führen wird.
9935300cookie-checkmysqli oder sterben, muss es sterben?yes
Wenn Sie die Funktion am ausführen möchten Erfolg der vorherigen Abfrage verwenden
and
anstattor
.– mario
10. März 2013 um 3:00 Uhr
Sicher können Sie eine Funktion nach dem aufrufen
or
(es ist ein Operator, wie Blender unten sagt). Eines zu definieren, wie Sie es anscheinend tun, ist jedoch nicht wirklich möglich oder sinnvoll.– Ry-
♦
10. März 2013 um 3:02 Uhr