Bei der Verwendung der MySQLI -Erweiterung von PHP für Datenbankvorgänge wird die Funktion mySQLI_STMT :: attr_get verwendet, um den Attributwert der Vorverarbeitungsanweisung ( mysqli_stmt ) zu erhalten. Diese Funktion kann in einigen Fällen falsch zurückgeben, was normalerweise angibt, dass die Eigenschaft fehlgeschlagen ist. In diesem Artikel wird die gängigen Gründe ausführlich analysiert, warum MySQLi_stmt :: attr_get false zurückgibt und entsprechende Lösungen angibt.
MySQLI_STMT :: attr_get muss als Parameter in einer Rechtsattributkonstante wie MySQLI_STMT_ATTR_UPDATE_MAX_LENGHT übergeben. Wenn die bestandene Attributkonstante ungültig oder undefiniert ist, gibt die Funktion falsch zurück.
Beispiel:
$mysqli = new mysqli('m66.net', 'user', 'pass', 'database');
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$attr = $stmt->attr_get(9999); // Illegale Attributkonstanten
if ($attr === false) {
echo "Es wurden Attribute nicht erhalten,Attributkonstanten sind illegal oder nicht unterstützt。";
}
Vorschläge : Bitte konsultieren Sie die offizielle Dokumentation, um sicherzustellen, dass die bestandenen Attributkonstanten korrekt und unterstützt sind.
Wenn das $ stmt- Objekt nicht erfolgreich erstellt oder $ stmt-> close () aufgerufen wurde, wird auch das Aufrufen von Attr_get fehlgeschlagen.
Beispiel:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("Die Erklärung ermöglichte die Erklärung nicht:" . $mysqli->error);
}
$stmt->close();
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if ($attr === false) {
echo "Es wurden Attribute nicht erhalten,Vorverarbeitungsanweisungsobjekt ist nicht verfügbar。";
}
Vorschlag : Bestätigen Sie, dass das Vorverarbeitungsanweisungsobjekt gültig ist und nicht geschlossen ist, bevor Sie Attr_get anrufen.
Einige PHP -Versionen oder MySQL -Treiberversionen haben möglicherweise Kompatibilitätsprobleme, was dazu führt, dass Attr_get nicht ordnungsgemäß funktioniert und falsch zurückgibt.
Anregung :
Stellen Sie sicher, dass die PHP- und MySQL -Versionen die offiziell empfohlenen stabilen Versionen sind.
Versuchen Sie, auf die neuesten Versionen von PHP und MySQL zu aktualisieren.
Testen Sie in verschiedenen Umgebungen, um Umweltprobleme zu beheben.
Attr_get erfordert, dass der eingehende Parameter eine Ganzzahlattributkonstante ist. Wenn eine Zeichenfolge oder ein anderer Typ übergeben wird, kann die Funktion false zurückgeben.
Beispiel:
$attr = $stmt->attr_get("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH"); // Falsche Verwendung
if ($attr === false) {
echo "Es wurden Attribute nicht erhalten,Fehlertyp -Fehler。";
}
Empfehlung : Stellen Sie sicher, dass die Parameter vordefinierte Ganzzahlkonstanten sind.
In seltenen Fällen können Datenbankverbindungs -Ausnahmen oder Ausnahmen von Ressourcenstatus auch dazu führen, dass die Funktion FALSE zurückgibt.
Anregung :
Bestätigen Sie, dass die Datenbankverbindung stabil ist.
Fang und behandeln Sie mögliche Ausnahmen oder Fehler.
Verwenden Sie $ MySQLI-> Fehler und $ stmt-> Fehler, um detaillierte Fehlerinformationen zu erhalten.
Hier ist ein Beispiel für die Verwendung von MySQLI_stmt :: attr_get richtig:
$mysqli = new mysqli('m66.net', 'user', 'pass', 'database');
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen:" . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("Die Erklärung ermöglichte die Erklärung nicht:" . $mysqli->error);
}
$id = 1;
$stmt->bind_param("i", $id);
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if ($attr === false) {
echo "Es wurden Attribute nicht erhalten,Fehlermeldung:" . $stmt->error;
} else {
echo "Der Attributwert ist:" . $attr;
}
$stmt->close();
$mysqli->close();
Verwandte Tags:
mysqli_stmt