Bei der Verwendung von PHP für Datenbankoperationen ist MySQLI eine gemeinsame Datenbankerweiterung, in der MySQLi_stmt :: $ Fehler verwendet wird, um Fehlerinformationen für kürzlich ausgeführte SQL -Anweisungen zu erhalten. Das Verständnis und Umgang mit diesen Fehlern ist ein entscheidender Bestandteil des Entwicklungsprozesses. In diesem Artikel wird mehrere gemeinsame MySQLI_stmt :: $ -Fehlerfehlerberichte analysiert, um jedem besser zu verstehen, wie man Probleme behebt und zu lösen.
MySQLI_STMT :: $ ERROR ist eine Fehlermeldung, die während der Ausführung einer vorbereiteten Anweisung in der MySQLI -Erweiterung generiert wird. Wenn eine Anweisung ausgeführt wird, können Sie bei einem Fehler $ STMT-> Fehler verwenden, um die Details des Fehlers zu erhalten.
Fehlermeldung :
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM users' at line 1
Grund :
Dieser Fehler tritt normalerweise auf, wenn der Syntaxfehler der SQL -Abfrageanweisung. Gemäß der Fehlermeldung ist ersichtlich, dass die erforderlichen ausgewählten Schlüsselwörter in der SQL -Abfrage fehlen.
Lösung :
Überprüfen Sie die Syntax in SQL-Anweisungen, um sicherzustellen, dass alle Felder und Schlüsselwörter korrekt sind. Beispiele sind wie folgt:
$sql = "SELECT * FROM users"; // Richtige Abfragesyntax
$stmt = $mysqli->prepare($sql);
$stmt->execute();
if ($stmt->error) {
echo "SQL Fehler: " . $stmt->error;
}
Fehlermeldung :
Error: No database selected
Grund :
Dieser Fehler tritt normalerweise auf, wenn die Datenbankverbindung nicht ordnungsgemäß ausgewählt ist oder in der Datenbankverbindung ein Problem vorliegt.
Lösung :
Stellen Sie sicher, dass Sie erfolgreich mit der Datenbank verbunden sind und die richtige Datenbank ausgewählt haben, bevor die Abfrage ausgeführt wird. Beispiele sind wie folgt:
$mysqli = new mysqli('localhost', 'user', 'password', 'mydatabase'); // Stellen Sie sicher, dass der Datenbankname korrekt ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
Fehlermeldung :
Error: Call to a member function bind_param() on a non-object
Grund :
Dieser Fehler tritt normalerweise auf, wenn die Vorbereitungsanweisung ausgeführt wird und die Parameter nicht ordnungsgemäß gebunden sind. Bind_param wird verwendet, um Parameter an Platzhalter in SQL -Anweisungen zu binden. Wenn keine Parameter gebunden sind, wird dieser Fehler erhöht.
Lösung :
Stellen Sie sicher, dass die Parameter korrekt gebunden sind, und überprüfen Sie, ob der Parametertyp in bind_param mit dem Datenbankfeldtyp übereinstimmt. Zum Beispiel:
$sql = "SELECT * FROM users WHERE username = ? AND age = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("si", $username, $age); // Parameterbindung
$stmt->execute();
if ($stmt->error) {
echo "SQL Fehler: " . $stmt->error;
}
Fehlermeldung :
Error: Argument 1 passed to mysqli_stmt::bind_param() must be of the type string, int given
Grund :
Beim Aufrufen von Bind_param stimmt der Typ des Parameters nicht mit dem Typ der eingehenden Daten überein. Wenn Sie beispielsweise einen Integer -Typ -Parameter übergeben, geben Sie jedoch den Bindungstyp als String ("S") an.
Lösung :
Stellen Sie sicher, dass der gebundene Parametertyp mit dem in übergebenen variablen Typ übereinstimmt. Bind_param unterstützt die folgenden Typen:
S : String (String)
I : Ganzzahl
D : doppelte Präzision schwimmende Zahl (doppelt)
B : Boolescher Wert (Blob)
$sql = "INSERT INTO users (username, age) VALUES (?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("si", $username, $age); // Richtige Bindung
$stmt->execute();
if ($stmt->error) {
echo "SQL Fehler: " . $stmt->error;
}
Fehlermeldung :
Error: No data returned from query
Grund :
Obwohl dieser Fehler selbst nicht unbedingt ein Fehler von MySQLI_stmt :: $ error ist, hängt normalerweise mit der Tatsache zusammen, dass SQL -Abfragen keine Ergebnisse zurückgeben. Dies kann auf Nichtübereinstimmung unter Abfragebedingungen oder Datenverlust zurückzuführen sein.
Lösung :
Überprüfen Sie die Abfragebedingungen, um sicherzustellen, dass die Daten vorhanden sind. Sie können auch überprüfen, ob Daten in der Datenbank tatsächlich vor Abfrage vorhanden sind.
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// Verarbeitungsdaten
} else {
echo "Keine Daten gefunden";
}
MySQLI_STMT :: $ ERROR wird verwendet, um Fehlerinformationen während der Ausführung von SQL -Anweisungen zu erhalten. Beim Schreiben von PHP -Code wird sichergestellt, dass die SQL -Abfrageanweisung korrekt ist, der Parametertyp übereinstimmt, die Datenbankverbindung normal ist usw. kann effektiv häufige Fehler vermeiden. Denken Sie für jede Abfrageausführung auch daran, zu überprüfen, ob ein Fehler in $ stmt-> Fehler auftritt.
Durch das Verständnis dieser gängigen Fehlerfälle und Ursachen können Sie MySQLI_STMT :: $ Fehler Fehler besser beheben und beheben und die Entwicklungseffizienz verbessern.