In PHP sind MySQLi_stmt :: attr_set und MySQLi_stmt :: attr_get Methoden, mit denen die Eigenschaften von MySQLI_STMT (Vorverarbeitungsanweisungen) festgelegt und erhalten wurden. Obwohl diese beiden Methoden in der tatsächlichen Entwicklung nicht häufig häufig angewendet werden, zeigen sie eine starke Flexibilität bei der Anpassung des Verhaltens von Aussagen in bestimmten Szenarien. In diesem Artikel wird gezeigt, wie Eigenschaftswerte mit diesen beiden Funktionen durch einen vollständigen Prozess festgelegt und abgerufen werden können.
Stellen Sie vor Beginn sicher, dass Sie bereits die folgende Umgebung haben:
Installieren und Aktivieren der PHP -Ausführungsumgebung mit MySQLI -Erweiterung;
Eine laufende MySQL -Datenbank;
Zugriff auf Datenbank Benutzername, Kennwort und Datenbankname;
Ein Testdatenblatt wird verwendet, um Vorverarbeitungsanweisungen zu demonstrieren.
Nehmen wir an, Sie haben bereits die folgende Datenbankverbindungskonfiguration:
$mysqli = new mysqli("localhost", "username", "password", "test_db");
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
Bereiten Sie dann eine einfache Testtabelle vor:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
Eigenschaftseinstellungen werden im Allgemeinen verwendet, um das Ausführungsverhalten von Vorverarbeitungsanweisungen zu steuern. Durch die Verwendung der Eigenschaft STMT_ATTTR_UPDATE_MAX_LENGEN kann beispielsweise die Eigenschaft STMT_ATTR_UPDATE_LENGEN automatisch die maximale Länge des resultierenden Feldes aktualisieren, wenn eine Auswahlabfrage ausgeführt wird.
$stmt = $mysqli->prepare("SELECT name FROM users");
if (!$stmt) {
die("Die Vorverarbeitung schlug fehl: " . $mysqli->error);
}
// Setzen Sie Eigenschaften:Lassen Sie die maximale Feldlänge nach Ausführung der Abfrage aktualisiert werden
$attr = mysqli_stmt::ATTR_UPDATE_MAX_LENGTH;
$success = $stmt->attr_set($attr, true);
if (!$success) {
echo "Setzen Sie Eigenschaften失败\n";
}
Nach dem Einstellen des Attributs können wir die Anweisung ausführen und dann den aktuellen Wert des Attributs über attr_get erhalten, um zu überprüfen, ob die Einstellung erfolgreich ist.
$stmt->execute();
$result = $stmt->get_result();
$length_updated = $stmt->attr_get($attr);
echo "Ist die maximale Feldlänge aktualisiert?: " . ($length_updated ? "Ja" : "NEIN") . "\n";
$mysqli = new mysqli("localhost", "username", "password", "test_db");
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT name FROM users");
if (!$stmt) {
die("Die Vorverarbeitung schlug fehl: " . $mysqli->error);
}
// Setzen Sie Eigenschaften:Aktualisieren Sie die maximale Länge
$attr = mysqli_stmt::ATTR_UPDATE_MAX_LENGTH;
if (!$stmt->attr_set($attr, true)) {
die("Setzen Sie Eigenschaften失败");
}
$stmt->execute();
$result = $stmt->get_result();
if ($stmt->attr_get($attr)) {
echo "Die maximale Feldlänge wurde aktualisiert。\n";
} else {
echo "Die maximale Feldlänge wird nicht aktualisiert。\n";
}
while ($row = $result->fetch_assoc()) {
echo "Benutzername: " . $row['name'] . "\n";
}
Begrenzte Attributunterstützung : Nach der aktuellen Version unterstützt MySQLI_STMT nur eine sehr kleine Anzahl von Attributen, wie z. B. attr_update_max_length . Die Verwendung von nicht unterstützten Eigenschaften wird nicht wirksam.
Datenbank -Treiberunterschied : Das Verhalten bestimmter Eigenschaften kann von der zugrunde liegenden Version der MySQL -Client -Bibliothek abhängen.
Kompatibilitätsprobleme : Seit PHP 8.1.0 wurden offiziell die Methoden von Attr_set und Attr_get eingeführt. Alte Versionen von PHP werden nicht unterstützt. Achten Sie daher auf die Kompatibilität der Version.
Durch den Prozess dieses Artikels haben wir gelernt, wie man Eigenschaften mithilfe der Methode MySQLI_STMT :: Attr_set festlegt und ihren Status mithilfe von MySQLi_stmt :: attr_get erhalten. Diese Methode ist besonders nützlich bei der Optimierung von Abfragen oder Debuggenverhalten. Obwohl es Szenarien mit nur begrenzten Gebrauch gibt, hilft uns das Mastering, ein tieferes Verständnis des Datenbank -Schnittstellenmechanismus von PHP zu haben.
Wenn Sie in der Projektentwicklung über PHP effizient mit der Datenbank interagieren müssen, können Sie diese niederfrequente, aber praktische APIs auch erforschen und beherrschen, um eine stabilere und flexiblere Back-End-Logik aufzubauen.