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>";