Dynamische Variablenbindung mit bind_param()
Beim Arbeiten mit einer variablen Anzahl von Eingabevariablen für bind_param() kann die Behandlung leerer Werte a Herausforderung. Der Versuch, „…“ in der Platzhalterzeichenfolge zu verwenden, ist aufgrund leerer $_POST-Werte möglicherweise nicht möglich.
Eine Lösung für dieses Problem besteht darin, call_user_func_array() zu verwenden, um eine variable Anzahl von Argumenten an bind_param zu übergeben ()-Methode:
<code class="php">$parameterNames = array('myvar1', 'myvar2', /* ... */); $parameters = array(); foreach ($parameterNames as $name) { if (isset($_POST[$name]) && $_POST[$name] != '') { $parameters[$name] = $_POST[$name]; } } if (count($parameters)) { $query = 'UPDATE mytable SET '; foreach ($parameters as $name => $value) { $query .= $name.'=?,'; } $query = substr($query, 0, -1); // Remove trailing comma $query .= 'WHERE id = ?'; $statement = $mysqli->prepare($query); $typeString = str_repeat('s', count($parameters)); $parameters = array_merge(array($typeString), array_values($parameters)); call_user_func_array(array($statement, 'bind_param'), $parameters); }</code>
Mit diesem Ansatz können Sie die SQL-Abfrage basierend auf den verfügbaren $_POST-Werten dynamisch generieren und so sicherstellen, dass nur nicht leere Werte in der Update-Anweisung enthalten sind.
Das obige ist der detaillierte Inhalt vonWie binde ich Parameter dynamisch mit „bind_param()' beim Umgang mit leeren Werten in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!