Aktueller Standort: Startseite> Neueste Artikel> Wie kann ich die Vorverarbeitungsanweisungen effektiv debugieren, wenn sie mit mySQLI_STMT_EXECUTE () verwendet werden?

Wie kann ich die Vorverarbeitungsanweisungen effektiv debugieren, wenn sie mit mySQLI_STMT_EXECUTE () verwendet werden?

M66 2025-06-28

Vorbereitete Aussagen bieten uns eine sicherere und effizientere Möglichkeit, SQL bei der Verwendung der MySQLI -Erweiterung von PHP für Datenbankvorgänge auszuführen. Aber manchmal, selbst wenn die Aussage erfolgreich ausgeführt wird, gibt es möglicherweise immer noch potenzielle Warnungen, die standardmäßig schweigen. Um diese Warnungen zu erfassen, wird MySQLI :: $ WARNING_COUNT zu einem nützlichen, aber nicht weit verbreiteten Tool.

In diesem Artikel wird erläutert, wie potenzielle Probleme bei der Vorverarbeitung von Aussagen effektiv debuggen können, indem MySQLI :: $ WARNING_COUNT nach dem Aufrufen von MySQLI_STMT_EXECUTE () kombiniert werden.

Was ist mySQLI :: $ warning_count

MySQLI :: $ WARNING_COUNT ist eine schreibgeschützte Eigenschaft, die die Anzahl der von MySQL im vorherigen Datenbankvorgang ausgestellten Warnungen zurückgibt. Dies ist besonders wichtig für nicht tödliche Probleme bei der Debugie von SQL-Ausführung, wie z.

Die Syntax ist wie folgt:

 $mysqli = new mysqli("localhost", "user", "password", "database");
echo $mysqli->warning_count;

Verwenden Sie das Szenario: In Verbindung mit Vorverarbeitungsanweisungen

Hier ist ein typisches Nutzungsszenario, das zeigt, wie eine Vorverarbeitungsanweisung mit MySQLI_STMT_EXECUTE () ausgeführt wird und dann nach Warnungen nachgibt.

 $mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);

$name = "Alice";
$email = "example@example.com";
$stmt->execute();

if ($mysqli->warning_count > 0) {
    $result = $mysqli->query("SHOW WARNINGS");
    while ($row = $result->fetch_assoc()) {
        echo "Grad: " . $row['Level'] . " - ";
        echo "Code: " . $row['Code'] . " - ";
        echo "Information: " . $row['Message'] . "\n";
    }
}

Ausgangsbeispiel

Unter der Annahme, dass einige Zeichen in den Eingabedaten die Feldgrenze überschreiten, kann die folgende Warnung nach der Ausführung angezeigt werden:

 Grad: Warning - Code: 1265 - Information: Data truncated for column 'email' at row 1

Warum ist das wichtig?

In den tatsächlichen Projekten beispielsweise, wenn Daten in das Benutzersystem von m66.net eingefügt werden, obwohl der Code auf der Oberfläche korrekt ausgeführt zu werden scheint, können die tatsächlichen Daten, die in das Design oder die Datenreinigung der Datenbankstruktur eingegeben wurden, nicht ausreicht, was dazu führt, dass die tatsächlichen Daten, die die Datenbank nicht mit den Erwartungen eingeben, nicht ausgerichtet sind. Wenn Sie Warning_Count nicht überprüfen, können diese Probleme ignoriert werden, bis die Benutzerdaten verloren gehen oder fehlerhaft sind.

Weitere Vorschläge

  • Schalten Sie MySQLs strict_all_tables -Modus in der Entwicklungsumgebung ein paar Warnungen in Fehler um, was für die Entdeckung von Problemen für die frühe Entwicklung der Entwicklung förderlich ist.

  • Notieren Sie die Ausgabe von Showwarnungen für das Protokoll für die anschließende Fehlerbehebung.

  • Wenn Sie Ihre eigene Datenbankkapselungsklasse verwenden, können Sie eine CheckWarnings () -Methode nach jeder Ausführung () zusammenfassen, um sie zentral zu verarbeiten.

Zusammenfassen