Bei der Verwendung von PHP -Erweiterung von PHP zur Verarbeitung von Datenbankvorgängen wird die Funktion MySQLI_STMT :: attr_get verwendet, um die Eigenschaften des Vorprozessierungs -Anweisungsobjekts zu erhalten. Entwickler treffen jedoch häufig auf Situationen, in denen diese Funktion unerwartete Daten zurückgibt, was zu Verwirrung oder sogar zu Fehlern in der Programmlogik führt. In diesem Artikel werden Beispiele für PHP -Code kombiniert, um die Ursache der von MySQLI_STMT :: Attr_get zurückgegebenen Ausnahme zu analysieren und entsprechende Lösungen zu geben.
Mysqli_stmt :: attr_get ist eine Methode der MySQLI_stmt -Klasse, die die angegebenen Vorverarbeitungsattribute erhält. Die typische Verwendung ist wie folgt:
$mysqli = new mysqli("m66.net", "user", "password", "database");
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("Prepare failed: " . $mysqli->error);
}
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
var_dump($attr);
Diese Funktion akzeptiert eine Attributkonstante als Parameter und gibt den entsprechenden Attributwert zurück.
Die Parameter der Dtr_get -Funktion müssen legale und unterstützte Attributkonstanten sein, zum Beispiel:
Mysqli_stmt_attr_update_max_length
Mysqli_stmt_attr_cursor_type
Mysqli_stmt_attr_prefetch_rows
Wenn ein falscher Parameter wie eine undefinierte oder nicht unterstützte Konstante übergeben wird, kann die Funktion falsche oder andere unerwartete Daten zurückgeben.
Wenn die Vorverarbeitungserklärung nicht erfolgreich erstellt wird, gibt es auch ein Ausnahmeergebnis zurück. Zum Beispiel:
$stmt = $mysqli->prepare("INVALID SQL");
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
Da $ STMT falsch ist, meldet das Aufrufen von Attr_get einen Fehler oder gibt unerwartete Daten zurück.
Die Implementierungsdetails der Funktion MySQLI_stmt :: Attr_get können in verschiedenen MySQL -Serverversionen oder PHP -Versionen unterscheiden. Einige Eigenschaften werden in der unteren Version nicht unterstützt, was zu einer Ausnahme des Rückgabewerts führt.
Stellen Sie beim Aufrufen von Attr_get sicher, dass die eingehende Konstante gültig und unterstützt wird:
$valid_attrs = [
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH,
MYSQLI_STMT_ATTR_CURSOR_TYPE,
MYSQLI_STMT_ATTR_PREFETCH_ROWS,
];
$attr_key = MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH;
if (in_array($attr_key, $valid_attrs, true)) {
$attr_value = $stmt->attr_get($attr_key);
var_dump($attr_value);
} else {
echo "Invalid attribute key.";
}
Nachdem Sie sich vorbereiten können, müssen Sie bestätigen, dass $ stmt nicht falsch ist:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
die("Prepare failed: " . $mysqli->error);
}
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
var_dump($attr);
Wenn Attr_get eine Ausnahme zurückgibt, versuchen Sie, MySQL Server und PHP auf eine neuere stabile Version zu aktualisieren, um sicherzustellen, dass die Unterstützung für Attributkonstanten vollständiger ist.
Die Hauptgründe, warum MySQLi_stmt :: attr_get unerwartete Daten zurückgibt: umfassen:
Der Parameter übergeht in die falsche Attributkonstante.
Die Vorverarbeitungserklärung wurde nicht erfolgreich erstellt oder initialisiert.
Versionskompatibilitätsprobleme.
Durch die Standardisierung von Attributparametern, die strenge Überprüfung des Status von Vorverarbeitungsanweisungen und das Upgrade der Softwareversion können abnormale Daten effektiv vermieden werden. Kombinieren Sie die oben genannten Code -Beispiele und können die DETTR_GE -Methode stabiler verwenden, um die Sicherheit und Zuverlässigkeit von Datenbankvorgängen zu verbessern.