Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht man eine variable Eingabebindung in MySQLi mit leeren POST-Parametern?

Wie erreicht man eine variable Eingabebindung in MySQLi mit leeren POST-Parametern?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 14:52:30206Durchsuche

How to Achieve Variable Input Binding in MySQLi with Empty POST Parameters?

Variable Eingabebindung in MySQLi

In MySQLi ist es wünschenswert, Parameter zu binden, um SQL-Injection zu verhindern und die Leistung zu optimieren. Wenn jedoch einige POST-Parameter leer sind, müssen sie separat behandelt werden.

Ein möglicher Ansatz besteht darin, die Funktion call_user_func_array zu verwenden, um die Methode bind_param mit einer variablen Anzahl von Argumenten aufzurufen. Dadurch können wir die Abfragezeichenfolge dynamisch erstellen und Parameter nur für nicht leere Werte binden.

Hier ist ein Beispiel:

<code class="php">$paramNames = array('myvar1', 'myvar2', /* ... */);
$params = array();
foreach ($paramNames as $name) {
    if (isset($_POST[$name]) && $_POST[$name] != '') {
        $params[$name] = $_POST[$name];
    }
}
if (count($params)) {
    $query = 'UPDATE mytable SET ';
    foreach ($params as $name => $val) {
        $query .= $name.'=?,';
    }
    $query = substr($query, 0, -1);
    $query .= 'WHERE id = ?';
    $stmt = $mysqli->prepare($query);
    $params = array_merge(array(str_repeat('s', count($params))), array_values($params));
    call_user_func_array(array(&$stmt, 'bind_param'), $params);
}</code>

Dieser Code durchläuft die POST-Parameter und prüft, ob sie vorhanden sind gesetzt und nicht leer, und fügt sie einem Array hinzu. Anschließend wird die Abfragezeichenfolge dynamisch mit nicht leeren Parametern erstellt und die Werte mithilfe von call_user_func_array gebunden.

Durch die separate Behandlung leerer POST-Parameter können wir eine variable Eingabebindung in MySQLi erreichen und so sicherstellen, dass nur gültige Daten im aktualisiert werden Datenbank und vermeidet unnötige Aktualisierungen. Es handelt sich um eine vielseitige und flexible Lösung, die eine Vielzahl von Eingabekombinationen unterstützt.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine variable Eingabebindung in MySQLi mit leeren POST-Parametern?. 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