Bei Verwendung der MySQLI -Erweiterung von PHP für Vorverarbeitungsvorgänge ist MySQLI_STMT :: BIND_PARAM eine sehr häufige Methode zur Bindungsparametern in Vorverarbeitungsanweisungen. Auf der anderen Seite wird MySQLI_STMT :: attr_get verwendet, um die Eigenschaften der Vorverarbeitungsanweisung zu erhalten. Ob die Reihenfolge der Anrufe dieser beiden Methoden das Ergebnis beeinflusst, und ob Attr_get erforderlich ist, um Bind_Param sicher aufzurufen, ist eine Frage, über die viele Entwickler besorgt sind.
Die Methode Bind_param wird verwendet, um Variablen an Parametermarkierungen (Fragenmarkierungen) in einer Vorverarbeitungsanweisung zu binden. Die Kernfunktion dieser Methode besteht darin, parametrisierte Abfragen zu implementieren, um die SQL -Injektion zu verhindern und die Ausführungseffizienz zu verbessern. Die grundlegende Verwendung ist wie folgt:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
Hier bedeutet "ich" , dass der Parametertyp der Grenze eine Ganzzahl ist.
Attr_get wird verwendet, um die Eigenschaften von Vorverarbeitungsanweisungen wie MySQLI_STMT_ATTTR_UPDATE_MAX_LENGH usw. zu erhalten.
Zum Beispiel:
$max_length = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
echo "Max length updated: " . $max_length;
Normalerweise ist Attr_get kein notwendiger Schritt, um Bindungsparameter durchzuführen. Bind_param kann direkt aufgerufen werden, solange die Vorverarbeitungsanweisung erfolgreich erstellt wurde, sind der Bindungsparametertyp und die Variable korrekt.
Die Anrufauftrag wird wie folgt empfohlen:
$ STMT = $ Mysqli-> vorbereiten ($ sql);
$ stmt-> bind_param ($ type, ... $ vars);
$ stmt-> execute ();
Das Aufrufen von attr_get ist optional, hauptsächlich zum Erhalt von Attributinformationen verwendet und hat keine direkte Abhängigkeit zwischen Bindungsparametern.
Rufen Sie zuerst Attr_get an und dann BIND_PARAM :
Dies wirkt sich nicht auf die Ausführung von Bind_param aus, sofern die Vorverarbeitungsanweisung fertig ist. Attr_get erhält nur das Attribut und ändert den Status der gebundenen Parameter nicht.
Rufen Sie zuerst BIND_PARAM auf und dann Attr_get :
Dies wirkt sich nicht auf den Wert des ATTR_GET -Erhaltungsattribute aus, und die Aufrufreihenfolge hat keinen Einfluss auf die Funktion.
Zusammenfassend gibt es keine strikte Auftragsabhängigkeit zwischen attr_get und bind_param , beide sind unabhängig voneinander und Attr_get ist normalerweise eine optionale Operation.
Verwandte Tags:
mysqli_stmt