Verwenden von bind_param() mit einer variablen Anzahl von Eingabevariablen
In vorbereiteten MySQL-Anweisungen wird bind_param() verwendet, um Variablen an die zu binden Platzhalter in der SQL-Abfrage. Bei der Arbeit mit einer dynamischen Anzahl von Eingabevariablen, wie z. B. Formulardaten, kann es jedoch schwierig sein, mit leeren oder fehlenden Werten umzugehen.
Problem:
Normalerweise bind_param() erfordert eine bestimmte Anzahl von Eingabevariablen und leere Werte würden Fehler verursachen. Es stellt sich die Frage: Wie kann man diese Situation effektiv bewältigen, wenn einige Eingabevariablen möglicherweise leer sind?
Lösung:
Ein innovativer Ansatz besteht darin, die Funktion call_user_func_array() zu verwenden Rufen Sie bind_param() mit einer variablen Anzahl von Argumenten auf. Hier ist eine Schritt-für-Schritt-Lösung:
-
Erstellen Sie ein Array mit Parameternamen: Definieren Sie ein Array, das die Namen aller Formularfelder enthält, die Sie aktualisieren möchten.
-
Leeres Array für Parameter initialisieren: Erstellen Sie ein neues Array, um die nicht leeren Feldwerte zu speichern.
-
Über Parameternamen iterieren: Schleife durch Array von Parameternamen. Überprüfen Sie für jeden Namen, ob der entsprechende Wert in $_POST gesetzt und nicht leer ist. Wenn ja, fügen Sie den Parameternamen und -wert zum Parameterarray hinzu.
-
Erstellen Sie die Abfragezeichenfolge: Erstellen Sie die SQL-Abfragezeichenfolge und fügen Sie dynamisch Platzhalter (?) für nicht leere Parameter hinzu.
-
Bereiten Sie die Anweisung vor: Bereiten Sie die geänderte Abfragezeichenfolge mit $mysqli->prepare() vor.
-
Erstellen Sie ein Array von Datentypen:Bestimmen die Datentypen der Parameter und erstellen Sie ein Array von Zeichen, die die Typen darstellen (z. B. „ss...“ für zwei Zeichenfolgen).
-
Führen Sie die Typ- und Wertarrays zusammen: Kombinieren Sie die Geben Sie array mit dem nicht leeren Parameterwerte-Array ein, um ein einzelnes Array zu erstellen.
-
Rufen Sie bind_param() mit call_user_func_array auf: Übergeben Sie das zusammengeführte Array als Argument an call_user_func_array(), um bind_param effektiv aufzurufen () mit einer variablen Anzahl von Parametern.
Das obige ist der detaillierte Inhalt vonWie binde ich Variablen an von MySQL vorbereitete Anweisungen mit einer dynamischen Anzahl von Eingabevariablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn