Umgang mit vorbereiteten Anweisungen mit der IN()-Bedingung in WordPress
WordPress bietet vorbereitete Anweisungen zum Schutz vor SQL-Injection-Angriffen und zur Verbesserung der Abfrageleistung. Die Verwendung der IN()-Bedingung mit mehreren Werten in einer Zeichenfolge kann jedoch zu Herausforderungen führen.
Problemstellung:
Stellen Sie sich die folgende Situation vor:
$villes = '"paris","fes","rabat"'; $sql = 'SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN(%s)'; $query = $wpdb->prepare($sql, $villes);
Dieser Code maskiert die Zeichenfolge nicht richtig, was zu einer einzelnen Zeichenfolge mit maskiertem Double führt Zitate:
SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN('\"paris\",\"fes\",\"rabat\"')
Lösung:
Um eine vorbereitete Anweisung mit mehreren Werten in WordPress korrekt zu implementieren, befolgen Sie diese Schritte:
// Create an array of the values to use in the list $villes = array('paris', 'fes', 'rabat'); // Generate the SQL statement. // Number of %s items based on length of $villes array $sql = " SELECT DISTINCT telecopie FROM `comptage_fax` WHERE `ville` IN(" . implode(', ', array_fill(0, count($villes), '%s')) . ") "; // Call $wpdb->prepare passing the values of the array as separate arguments $query = call_user_func_array(array($wpdb, 'prepare'), array_merge(array($sql), $villes));
PHP-Funktionen Verwendet:
Dieser Ansatz stellt sicher, dass die Werte in $villes ordnungsgemäß maskiert werden und in der IN()-Bedingung als separate Werte behandelt.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit vorbereiteten Anweisungen mit der IN()-Bedingung in WordPress um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!