Aktueller Standort: Startseite> Neueste Artikel> So anzeigen die spezifische SQL -Fehlermeldung bei Prepe () fehl

So anzeigen die spezifische SQL -Fehlermeldung bei Prepe () fehl

M66 2025-05-29

Bei der Entwicklung von PHP -Anwendungen ist die Fehlerbehebung bei Datenbankvorgängen eine sehr häufige Aufgabe. Insbesondere bei Verwendung der MySQLI -Erweiterung verwenden wir häufig die Funktion Prepe () , um SQL -Anweisungen zu erstellen. Manchmal kann sich jedoch merken () vorbereiten () . Wie können wir die spezifischen Fehlerinformationen anzeigen? Die MySQLI :: STMT_INIT -Funktion kann uns helfen, dieses Problem zu lösen und detailliertere Fehlerinformationen bereitzustellen.

Was ist MySQLI :: STMT_INIT?

MySQLI :: STMT_INIT ist eine Funktion, mit der das Objekt mySQLI_STMT initialisiert wird. Sie können ein vorbereitetes Anweisungsobjekt für die Ausführung von SQL -Anweisungen erstellen. Normalerweise rufen wir die Funktion PREAP () auf, um SQL -Anweisungen vor der Ausführung von SQL -Abfragen zu erstellen. Wenn Prepe () fehlschlägt, kann das Aufrufen von MySQLI_Error () direkt keine spezifischen SQL -Fehlerinformationen erhalten.

Durch die Initialisierung des Anweisungsobjekts STMT_Init können wir die Ursache des Fehlers und detailliertere Fehlerinformationen nach dem Aufrufen von Prepet () anzeigen.

Beispielcode: So anzeigen Prepe () Fehler mit MySQLI :: STMT_INIT

Hier ist ein Beispielcode, der MySQLI :: STMT_INIT verwendet, um SQL -Anweisungsfehler zu behandeln:

 <?php
// Datenbankverbindungseinstellungen
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test_db';

// erstellen MySQLi verbinden
$mysqli = new mysqli($host, $username, $password, $dbname);

// 检查verbinden是否成功
if ($mysqli->connect_error) {
    die("verbinden失败: " . $mysqli->connect_error);
}

// verwenden stmt_init Initialisierung SQL Anweisungsobjekt
$stmt = $mysqli->stmt_init();

// Vorbereiten SQL Stellungnahme
$sql = "SELECT * FROM non_existing_table WHERE id = ?";

// passieren stmt_init Funktionsansicht prepare() Fehlermeldung beim Fehler
if (!$stmt->prepare($sql)) {
    // prepare Bei Versäumnis,Ausgabespezifisch SQL Fehlermeldung
    echo "SQL Fehler: " . $stmt->error;
} else {
    echo "SQL Vorbereiten成功!";
}

// 关闭verbinden
$stmt->close();
$mysqli->close();
?>

Code Parsen:

  1. Erstellen Sie eine Datenbankverbindung : Erstellen Sie zunächst eine Verbindung zur Datenbank über New MySQLI () . Wenn die Verbindung fehlschlägt, endet das Skript und die Verbindungsfehlermeldung wird ausgegeben.

  2. Anweisungsobjekt initialisieren : Erstellen Sie ein Anweisungsobjekt $ STMT über MySQLI :: STMT_INIT () , mit dem SQL -Abfragen ausgeführt werden.

  3. SQL-Anweisungen vorbereiten : Verwenden Sie die Funktion $ STMT-> Preped ($ SQL), um die SQL-Anweisung vorzubereiten. Wenn Prepe () fehlschlägt, gibt $ stmt-> Fehler die fehlgeschlagene Fehlermeldung zurück, durch die wir beheben können.

  4. Ausgabefehlermeldung : Wenn Prepe () fehlschlägt, gibt der Code eine spezifische SQL -Fehlermeldung aus, um Entwicklern zu helfen, die Root -Ursache des Problems zu verstehen.

  5. Schließen Sie die Verbindung : Denken Sie nach Abschluss des Vorgangs daran, die Datenbankverbindung zu schließen und die Ressourcen freizugeben.

Häufige Gründe für die Handhabung Vorbereitung () Fehler

  1. SQL -Syntaxfehler : Eine der häufigsten Ursachen für Fehler. Wenn ein Problem mit der Syntax der SQL -Anweisung vorliegt, fehlschlägt Prepe () eine Fehlermeldung.

  2. Tabelle oder Feld existiert nicht : Preped () scheitert auch, wenn in der SQL-Abfrage eine nicht existierende Tabelle oder ein nicht existierendes Feld verwendet wird.

  3. Datenbankverbindungsproblem : Wenn ein Problem mit der Datenbankverbindung selbst vorliegt, wirkt sich auch die Ausführung von Prepet () aus.

Durch die Funktion STMT_init können wir die spezifischen Gründe für das Vorbereitung () () ausführlich verstehen, wodurch Fehler effektiv behoben werden können.