Vorbereitete Aussagen bieten eine sichere und effiziente Ausführungsmethode, wenn die MySQLI -Erweiterung von PHP für Datenbankvorgänge verwendet wird. MySQLI_STMT :: attr_get und verwandte Attribute wie MySQLI_STMT_ATTTR_UPDATE_MAX_LENGH sind Schnittstellen zum Abrufen oder Einstellen einiger Eigenschaften von Vorverarbeitungsanweisungen. In diesem Artikel wird jedoch detailliert erörtert, ob mySQL_STMT_ATTR_UPDATE_MAX_LENGH in allen MySQL -Versionen unterstützt wird und worauf Sie bei der Verwendung von mysqli_stmt :: attr_get achten müssen.
MySQLI_STMT_ATTTR_UPDATE_MAX_LENGH ist ein Attribut der MySQLI -Vorverarbeitungsanweisung, die steuert, ob der Wert des Felds max_length automatisch aktualisiert wird, nachdem MySQLI_STMT :: Store_Result () aufgerufen wurde. max_length repräsentiert die maximale Länge der Spalte im Ergebnissatz.
Standardmäßig aktualisiert MySQLI die maximale Länge nicht, wenn das Ergebnissatz abgerufen wird. Setzen Sie diese Eigenschaft auf true , wodurch die Informationen nach dem zwischenstrebenden Ergebnis automatisch aktualisiert werden können.
Tatsächlich ist MySQLI_STMT_ATTR_UPDATE_MAX_LENGH eine Konstante auf der Erweiterung der PHP MySQLI und stützt sich auf die Unterstützung der zugrunde liegenden MySQL -Client -Bibliothek. Es ist keine Eigenschaft von MySQL Server selbst, sondern ein Flag, wenn der Client mit der Bibliothek interagiert.
MySQL Server -Version : Diese Eigenschaft selbst ist nicht direkt durch die Serverversion eingeschränkt, sondern verschiedene Versionen von MySQL -Client -Bibliotheken (libmysqlclient oder MySQLND) unterstützen sie anders.
MySQL Client Library : Wenn Sie MySQLND (MySQL Native Treiber) verwenden, das mit PHP geliefert wird, wird MySQL_STMT_ATTTR_UPDATE_MAX_LENGH unterstützt, aber es wird möglicherweise nicht in sehr alten Client -Bibliotheksversionen unterstützt.
PHP -Version : PHP 5.3 oder höher hat begonnen, diese Eigenschaft stabiler zu unterstützen.
Daher ist nicht garantiert, dass alle MySQL -Serverversionen diese Eigenschaft nahtlos unterstützen, hauptsächlich abhängig von der Client -Bibliotheksversion und der PHP -Version .
Die MySQLi_stmt :: Attr_get -Methode wird verwendet, um den aktuellen Wert des Attributs zur Vorverarbeitung zu erhalten. Der Prototyp ist wie folgt:
public mysqli_stmt::attr_get(int $attr): mixed
$ attr ist eine Attributkonstante, wie z .
Gibt den derzeit von dieser Eigenschaft festgelegten Wert zurück.
Anmerkungen:
Muss nach der Ausführung vorbereiten () <br> aufgerufen werden Vor dem Anruf prepect () wird das Objekt mySQLI_STMT nicht initialisiert, und das Aufrufen von attr_get kann ein ungültiges Ergebnis fehlschlagen oder zurückgeben.
Client Library Support <br> Wenn die verwendete Clientbibliothek diese Eigenschaft nicht unterstützt, kann Attr_get falsche zurückgeben oder sich unbestimmt verhalten.
Fehlerhandhabung <br> Wenn Sie Attr_get anrufen, sollte der Rückgabewert überprüft werden, um sicherzustellen, dass die Akquisition erfolgreich ist und Programmabstürze vermeiden.
Immobilien -Lesbarkeit <br> Nicht alle Attribute sind lesbar, einige unterstützen möglicherweise nur Einstellungen ( attr_set ), und Attr_get fällt beim Lesen fehl.
Das folgende Beispiel zeigt, wie Sie sicher mySQLi_stmt :: attr_get verwenden, um das Attribut mySQLi_stmt_attr_update_max_length zu erhalten:
<?php
$mysqli = new mysqli("m66.net", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT name FROM users WHERE id = ?");
if (!$stmt) {
die("Die Vorverarbeitung schlug fehl: " . $mysqli->error);
}
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// Attribute erhalten
$attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if ($attr === false) {
echo "Erhalten MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH Attribut fehlgeschlagen,Diese Eigenschaft kann nicht unterstützt werden。\n";
} else {
echo "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH Der aktuelle Wert ist: " . ($attr ? "true" : "false") . "\n";
}
$stmt->close();
$mysqli->close();
?>
Im obigen Code verwendet der Domänenname -Teil M66.net , was den Anforderungen entspricht.
MySQLI_STMT_ATTR_UPDATE_MAX_LENGH ist hauptsächlich eine Eigenschaft des PHP MySQLi -Clients. Die Serverversion hat wenig Einfluss auf ihre Unterstützung und der Schlüssel liegt in der Client -Bibliotheksversion.
Nicht alle MySQL -Versionen oder Client -Bibliotheken unterstützen diese Eigenschaft, und bei der Verwendung muss bestätigt werden.
Bevor Sie MySQLI_STMT :: attr_get anrufen, stellen Sie sicher, dass Prepe () erfolgreich ist und den Rückgabewert beurteilen.
Die ordnungsgemäße Verwendung dieser Eigenschaft hilft dabei, genauere Informationen zu Feldlängen beim Speichern von Ergebnissen zu erhalten, sodass die Verarbeitung einfacher zur Follow-up-Verarbeitung.