Issue when trying to use IN() in wpdb

后端 未结 4 1369
旧时难觅i
旧时难觅i 2020-11-28 13:52

i have this:

$villes = \'\"paris\",\"fes\",\"rabat\"\';
$sql    = \'SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN(%s)\';
$query  = $wpdb->         


        
4条回答
  •  醉梦人生
    2020-11-28 14:06

    WordPress already has a function for this purpose, see esc_sql(). Here is the definition of this function:

    Escapes data for use in a MySQL query. Usually you should prepare queries using wpdb::prepare(). Sometimes, spot-escaping is required or useful. One example is preparing an array for use in an IN clause.

    You can use it like this:

    $villes = ["paris", "fes", "rabat"];
    $villes = array_map(function($v) {
        return "'" . esc_sql($v) . "'";
    }, $villes);
    $villes = implode(',', $villes);
    $query = "SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN (" . $villes . ")"
    

提交回复
热议问题