Heim  >  Artikel  >  Backend-Entwicklung  >  Wie binde ich Eingabevariablen in PHP dynamisch mit bind_param(), wenn einige Variablen möglicherweise leer sind?

Wie binde ich Eingabevariablen in PHP dynamisch mit bind_param(), wenn einige Variablen möglicherweise leer sind?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 03:33:02306Durchsuche

How to Dynamically Bind Input Variables in PHP with bind_param() when Some Variables May Be Empty?

Anpassen von bind_param() für die dynamische Eingabevariablenbindung

Problem:

Binden einer variablen Anzahl von Eingabevariablen mithilfe der Die Methode bind_param() kann eine Herausforderung sein, insbesondere wenn einige Variablen leer sind und nicht in der Datenbank aktualisiert werden sollten.

Antwort:

Die Funktion call_user_func_array() kann verwendet werden, um bind_param() mit einer variablen Anzahl von Argumenten aufzurufen und so eine Lösung für dieses Problem bereitzustellen.

Implementierung:

  1. Eingabevariablennamen definieren:

    • Erstellen Sie ein Array der Eingabevariablennamen (z. B. $paramNames = array('myvar1', 'myvar2', /* ... */)) .
  2. Nicht leere Variablen filtern:

    • Durchlaufen Sie die Namen der Eingabevariablen und prüfen Sie, ob jede Variable gesetzt ist und nicht leer im $_POST-Array (z. B. $params[$name] = $_POST[$name];).
  3. Build Query String:

    • Konstruieren Sie die Abfragezeichenfolge, indem Sie Variablen, die nicht leer sind, an die Variable $query anhängen (z. B. foreach ($params as $name => $val) { $query .= $name.'=?,'; }).
  4. Abfragesyntax anpassen:

    • Entfernen Sie das abschließende Komma aus $query und fügen Sie den verbleibenden Teil von hinzu die Abfrage (z. B. $query = substr($query, 0, -1); $query .= 'WHERE id = ?';).
  5. Bereiten Sie die Anweisung und die Bindungsparameter vor:

    • Bereiten Sie die Anweisung mit der geänderten $query vor und rufen Sie bind_param() mit einem Array auf, das die richtige Anzahl von s-Zeichen enthält (z. B. $params = array_merge(array (str_repeat('s', count($params))), array_values($params))).
  6. Rufen Sie bind_param() mit call_user_func_array() auf:

    • Rufen Sie bind_param() mit call_user_func_array(array(&$stmt, 'bind_param'), $params) auf, um eine variable Anzahl von Argumenten zu übergeben.

Diese Technik ermöglicht die dynamische Bindung von Eingabevariablen, berücksichtigt leere Variablen und stellt sicher, dass nur gültige Daten in der Datenbank aktualisiert werden.

Das obige ist der detaillierte Inhalt vonWie binde ich Eingabevariablen in PHP dynamisch mit bind_param(), wenn einige Variablen möglicherweise leer sind?. 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