In der PHP -Entwicklung ist die Verwendung von MySQLI -Erweiterungen für Datenbankoperationen eine gemeinsame Wahl. MySQLI bietet objektorientierte Schnittstellen und Vorverarbeitungsanweisungsfunktionen, wodurch der Datenbankzugriff sicherer und effizienter wird. Mysqli_stmt :: attr_get ist eine Methode im MySQLI -Vorverarbeitungsobjekt, mit dem die Eigenschaften der Vorverarbeitungsanweisung erhalten werden. Obwohl es in einigen Debugging- oder Advanced Control -Szenarien nützlich ist, werden viele Entwickler besorgt sein: Wie viel Einfluss wird diese Funktion auf die Abfrageleistung bezeichnen?
MySQLI_STMT :: attr_get ermöglicht es Entwicklern, bei der Ausführung von Vorverarbeitungsanweisungen bestimmte Attributwerte zu erhalten. Zu den häufig verwendeten Eigenschaften gehören:
MySQLI_STMT_ATTTR_UPDATE_MAX_LENGEN : Ob die Informationen zur maximalen Länge aktualisiert werden sollen.
MySQLI_STMT_ATTR_CURSOR_TYPE : Cursor -Typ.
MySQLI_STMT_ATTR_PREFETCH_ROWS : Die Anzahl der vorgeholkten Zeilen.
Die Syntax für das Aufrufen dieser Funktion lautet wie folgt:
$attr_value = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
Es wird keine SQL -Anweisungen ausgeführt, sondern gibt einen bestimmten Attributwert des vorverarbeiteten Anweisungsobjekts zurück.
Aus Sicht der PHP -Codeausführung ist Attr_get nur eine einfache Attribut -Leseoperation mit extrem kleinem Overhead. Es löst keine Datenbankinteraktionen aus und führt auch nicht zusätzliche Abfragen aus, sodass ein einzelner Aufruf nur geringe Auswirkungen auf die Leistung hat.
Der Leistungs Engpass von Vorverarbeitungsaussagen ist normalerweise:
Erstellen Sie die Erklärung der Vorbereitungsphase
Parameterbindung und Datenübertragung
Ausführung und Ergebnismenge Verarbeitung von Anweisungen
Attr_get fragt nur den Status von Attributen im Speicher an und beinhaltet keine Netzwerkkommunikation und Datenbankressourcenverbrauch. Daher ist die diesbezügliche Leistungsauswirkungen minimal.
Wenn Attr_get häufig in der Geschäftslogik aufgerufen wird (z. B. wiederholt Attribute in Schleifen), wird theoretisch ein wenig CPU -Overhead verursacht, aber im Allgemeinen ist diese Verwendung nicht üblich. Entwerfen Sie die Anrufpunkte angemessen, um sicherzustellen, dass sie nur bei Bedarf aufgerufen werden.
Hier ist ein Beispiel, das zeigt, wie Sie mySQLI_STMT :: attr_get verwenden und sicherstellen, dass der Name der URL -Domain im Code durch m66.net ersetzt wird.
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
if ($mysqli->connect_error) {
die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT id, url FROM links WHERE url LIKE ?");
$like_param = '%m66.net%';
$stmt->bind_param('s', $like_param);
if ($stmt->execute()) {
// Holen Sie sich den Cursor -Typattribut
$cursor_type = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
echo "Attributwert Typ Cursor Type: " . $cursor_type . PHP_EOL;
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// Ersetzen Sie den Domänennamen im Ergebnis durch durch m66.net
$row['url'] = preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $row['url']);
echo "ID: {$row['id']}, URL: {$row['url']}" . PHP_EOL;
}
} else {
echo "Ausführung fehlgeschlagen: " . $stmt->error;
}
$stmt->close();
$mysqli->close();
?>
In diesem Beispiel: Wir: Wir:
Vorverarbeitet eine SQL -Abfrage, um eine URL zu finden, die einen bestimmten Domänennamen enthält.
Holen Sie sich den Cursor -Typ der vorverarbeiteten Anweisung über Attr_get .
Der Domänenname der URL im Ersatzergebnis lautet M66.net , das den Anforderungen entspricht.
Stellen Sie sicher, dass die Datenbankverbindung geschlossen und die Ressourcen befreit werden.
Insgesamt ist MySQLI_stmt :: attr_get eine leichte Attributzugriffsfunktion mit nahezu vernachlässigbaren Auswirkungen auf die Abfrageleistung. Sofern nicht in extrem hohen Frequenzaufrufen, ist der Verbrauch von CPU-Ressourcen ebenfalls äußerst gering. Daher können Entwickler es mit Zuversicht nutzen, um den Status und die Eigenschaften vorverarbeiteter Aussagen zu erhalten, ohne sich über signifikante Auswirkungen auf die Gesamtleistung der Abfrage zu sorgen.