Php 在mySQL WHERE子句中传递非值

Php 在mySQL WHERE子句中传递非值,php,mysql,Php,Mysql,下面是我正在尝试进行的查询 $array = array(); SELECT * FROM ENTRIES WHERE entry_id = '12' OR entry_id_extra IN ('$array') 这当然是简化了的。问题是,如果数组中有项并且返回的所有内容都很好,那么它的效果会很好。但是,如果数组中没有项,它将无法工作 如果数组中没有项,构造此不中断的语句的正确方法是什么?我在('NULL','$array')中尝试了,,但没有成功 非常感谢您的帮助。您可以对w

下面是我正在尝试进行的查询

$array = array();

SELECT * FROM ENTRIES
WHERE
   entry_id = '12'
OR
   entry_id_extra IN ('$array')
这当然是简化了的。问题是,如果数组中有项并且返回的所有内容都很好,那么它的效果会很好。但是,如果数组中没有项,它将无法工作

如果数组中没有项,构造此不中断的语句的正确方法是什么?我在('NULL','$array')中尝试了
,但没有成功


非常感谢您的帮助。

您可以对where子句的
部分进行条件检查:

$sql = "SELECT * FROM entries WHERE entry_id = 12"

if (count($array) > 0) {
    $sql .= ' OR entry_id_extra IN ($array)';
}
$array=array(…);
$array=array\u map('mysql\u escape\u string',$array);//确保安全
$query=“选择*
从条目
其中,条目_id='12'”
. (计数($array)>0
“?”或(“.”中的项目“\u id\u extra”。内爆(“,”,$array)。”)”
: "");
//回显查询以查看其外观(可选)
回显“{$query}”;

您可以使用
内爆
,但也要确保转义这些值,这样引号就不会关闭查询。

请告诉我。如果阵列为空,则OR运算符将挂起,这将导致故障!这正是我需要的。
$array = array(...);
$array = array_map('mysql_escape_string', $array); // make sure it's safe
$query = "SELECT   *
          FROM     entries
          WHERE    entry_id = '12'"
       . (count($array) > 0
         ? " OR    entry_id_extra IN ('" . implode("','", $array) . "')" 
         : "");

// echo the query to see what it looks like (optional)
echo "<pre>{$query}</pre>";