Aktueller Standort: Startseite> Neueste Artikel> Debugging gespeicherte Prozedur -Anruffehler mit MySQLI_STMT :: $ ERROR

Debugging gespeicherte Prozedur -Anruffehler mit MySQLI_STMT :: $ ERROR

gitbox 2025-05-20

Bei der Interaktion mit einer Datenbank mithilfe der MySQLI -Erweiterung von PHP ist es nicht ungewöhnlich, gespeicherte Prozeduren aufzurufen. In diesem Fall können Debugging -Fehler relativ schwierig werden, da die gespeicherten Verfahrensfehler von MySQL normalerweise nicht direkt zu dem Aufruf von PHP zurückgegeben werden. Glücklicherweise kann die Eigenschaft von MySQLI_stmt :: $ ERRAGE von PHP uns helfen, Fehlerinformationen aus gespeicherten Prozeduranrufen zu erfassen und so Hinweise zum Debuggen zu geben. In diesem Artikel wird detailliert erläutert, wie diese Eigenschaft zum Debuggen für die Aufrufbehörden für das Verfahrensanfall debuggen.

Hintergrund

In PHP wird MySQLI_STMT :: $ ERROR verwendet, um Fehlerinformationen im Zusammenhang mit Vorverarbeitungsanweisungen zu erhalten. Die $ iR -Eigenschaft gibt eine Zeichenfolge zurück, in der Fehler beschrieben werden, die bei der Ausführung der Anweisung auftreten. Wenn der gespeicherte Verfahrensaufruf fehlschlägt oder die SQL -Abfrage fehlschlägt, können wir diese Eigenschaft verwenden, um detailliertere Fehlerinformationen zu erhalten, um uns zu helfen, die Hauptursache des Problems zu finden.

Debugging gespeicherte Prozeduren sind mit MySQLI_STMT :: $ ERROR fehlgeschlagen

Um zu demonstrieren, wie gespeicherte Prozeduraufrufe mit MySQLI_STMT :: $ ERRAGE fehlschlagen, müssen wir zunächst sicherstellen, dass eine Verbindung zur Datenbank hergestellt und die gespeicherte Prozedur korrekt eingerichtet wird. Angenommen, wir haben eine gespeicherte Prozedur namens Get_User_info , die einen Parameter user_id nimmt und die Informationen des Benutzers zurückgibt. Hier ist ein mögliches PHP -Skript, das zeigt, wie Sie diese gespeicherte Prozedur nennen und MySQLI_STMT :: $ ERRAGE verwenden, um Debug -Informationen zu erhalten.

1. Stellen Sie eine Datenbankverbindung her

Zunächst müssen wir eine Verbindung zur Datenbank erstellen und überprüfen, ob sie erfolgreich ist:

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_database";

// Eine Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Überprüfen Sie die Verbindung
if ($conn->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}
?>

2. Rufen Sie die gespeicherte Prozedur auf und überprüfen Sie auf Fehler

Als nächstes sind wir bereit, das gespeicherte Verfahren anzurufen. Wenn der Anruf fehlschlägt, verwenden wir MySQLI_STMT :: $ ERROR , um die detaillierten Fehlerinformationen zu erhalten:

 <?php
$user_id = 1;  // Angenommen, der Benutzer, den wir abfragen möchten ID

// Bereiten Sie gespeicherte Verfahrensanrufe vor
$stmt = $conn->prepare("CALL get_user_info(?)");

if ($stmt === false) {
    die("Vorbereitung des gespeicherten Verfahrens ist fehlgeschlagen: " . $conn->error);
}

// Binden Sie Parameter
$stmt->bind_param("i", $user_id);

// Speichernde Prozeduren ausführen
$stmt->execute();

// Überprüfen Sie, ob die Ausführung erfolgreich ist
if ($stmt->errno) {
    echo "Ausführung des gespeicherten Verfahrens ist fehlgeschlagen: " . $stmt->error;
} else {
    // Ergebnisse erhalten
    $result = $stmt->get_result();
    $user = $result->fetch_assoc();
    print_r($user);
}

// Aussage
$stmt->close();

// Schließen Sie die Verbindung
$conn->close();
?>

3. Fehlerdebuggen

Wenn der Aufruf gespeicherter Prozedur fehlschlägt, liefert $ stmt-> errno und $ stmt-> Fehler detaillierte Fehlerinformationen. Wenn der Name des gespeicherten Prozedurnamens beispielsweise falsch ist oder die Parameter nicht übereinstimmen, gibt $ STMT-> Fehler eine MySQL-Fehlermeldung zurück, um das Problem zu finden.

Häufige Fehler können einschließen:

  • Spagierte Prozedur ist nicht vorhanden : Wenn der Name der gespeicherten Prozedur falsch geschrieben oder nicht erstellt wird, zeigt MySQLI_STMT :: $ ERROR Unbekannte Fehlermeldung an.

  • Nichtübereinstimmung vom Parametertyp : Wenn die gespeicherte Prozedur einen Ganzzahlparameter erwartet, aber Sie die Zeichenfolge übergeben, fordert MySQLI_stmt :: $ Fehler auf, dass der Typ -Fehlanpassung nicht der Fall ist.

4. detailliertere Debugging -Informationen

Wenn detailliertere Debugging -Informationen erforderlich sind, können Sie MySQLs Show -Prozedurstatus verwenden und Fehler anzeigen, um den Status und Fehlerprotokoll der gespeicherten Prozeduren zu überprüfen:

 <?php
$result = $conn->query("SHOW PROCEDURE STATUS WHERE Name = 'get_user_info'");
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "Speicherverfahrenstatus gespeichert: " . $row["Db"] . " - " . $row["Name"] . "\n";
    }
} else {
    echo "Keine gespeicherten Verfahrensinformationen gefunden。\n";
}
?>

Mit diesen Methoden erhalten Sie weitere Informationen zu gespeicherten Verfahren, um Ihre Probleme zu finden.

abschließend

Durch die Verwendung von MySQLI_STMT :: $ ERROR kann den Fehler beim Debugging bei der gespeicherten Prozedur erheblich vereinfachen. Es bietet Entwicklern detaillierte Fehlerinformationen und hilft dabei, Probleme schnell zu identifizieren und zu beheben. Wenn Sie das Status- und Fehlerprotokoll der Datenbank kombinieren, können Sie das Problem des Aufruffehlers des gespeicherten Prozedur effizienter lösen.