diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php index d7b44bac0881580f5f07ffeb8f5208c2cdb08674..ff3b3dc0cd2dc498b1ca58089037f38c28b1478c 100644 --- a/ecrire/base/abstract_sql.php +++ b/ecrire/base/abstract_sql.php @@ -307,6 +307,12 @@ function sql_quote($val, $serveur='') // http://doc.spip.org/@sql_in function sql_in($val, $valeurs, $not='', $serveur='') { + if (is_array($valeurs)) { + $f = sql_serveur('quote', $serveur); + $valeurs = join(',', array_map($f, array_unique($valeurs))); + } elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1); + if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1'); + $f = sql_serveur('in', $serveur); return $f($val, $valeurs, $not, $serveur); } diff --git a/ecrire/req/mysql.php b/ecrire/req/mysql.php index a85de287990343e90ae3dcc957ba2b17d3a17f7c..fdfc797803069560b378f46f38f7db51d53cd0d8 100644 --- a/ecrire/req/mysql.php +++ b/ecrire/req/mysql.php @@ -562,21 +562,10 @@ function spip_mysql_quote($v) return _q($v); } -// pour compatibilite -function spip_mysql_in($val, $valeurs, $not='', $serveur='') { - return calcul_mysql_in($val, $valeurs, $not); -} - // // IN (...) est limite a 255 elements, d'ou cette fonction assistante // -// http://doc.spip.org/@calcul_mysql_in -function calcul_mysql_in($val, $valeurs, $not='') { - if (is_array($valeurs)) - $valeurs = join(',', array_map('_q', $valeurs)); - elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1); - if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1'); - +function spip_mysql_in($val, $valeurs, $not='', $serveur='') { $n = $i = 0; $in_sql =""; while ($n = strpos($valeurs, ',', $n+1)) { @@ -594,6 +583,16 @@ function calcul_mysql_in($val, $valeurs, $not='') { return "($in_sql)"; } +// pour compatibilite. Ne plus utiliser. +// http://doc.spip.org/@calcul_mysql_in +function calcul_mysql_in($val, $valeurs, $not='') { + if (is_array($valeurs)) + $valeurs = join(',', array_map('_q', $valeurs)); + elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1); + if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1'); + return spip_mysql_in($val, $valeurs, $not); +} + // http://doc.spip.org/@spip_mysql_cite function spip_mysql_cite($v, $type) { if (sql_test_date($type) AND preg_match('/^\w+\(/', $v) diff --git a/ecrire/req/pg.php b/ecrire/req/pg.php index 7e6ac06d690509e2107e7b9c3f3faf22cb8ed807..96a3d402fda35e0e3f3b71103dde2eea14d3ce52 100644 --- a/ecrire/req/pg.php +++ b/ecrire/req/pg.php @@ -743,10 +743,6 @@ function spip_pg_in($val, $valeurs, $not='', $serveur) { // // IN (...) souvent limite a 255 elements, d'ou cette fonction assistante // - if (is_array($valeurs)) - $valeurs = join(',', array_map('_q', $valeurs)); - elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1); - if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1'); if (strpos($valeurs, "CAST(x'") !== false) return "($val=" . join("OR $val=", explode(',',$valeurs)).')'; $n = $i = 0;