以下是我试图开始工作的查询。
$array = array();
SELECT * FROM ENTRIES
WHERE
entry_id = '12'
OR
entry_id_extra IN ('$array')
这当然是简化的。问题是,如果数组有项目并且它返回一切正常,它的效果很好。但是如果数组没有项目则无法工作。
如果数组中没有项目,构造此语句的正确方法是什么?我试过了IN ('NULL','$array')
但是没有用。
感谢任何帮助。
答案 0 :(得分:2)
您可以使where子句的OR
部分经过条件检查:
$sql = "SELECT * FROM entries WHERE entry_id = 12"
if (count($array) > 0) {
$sql .= ' OR entry_id_extra IN ($array)';
}
答案 1 :(得分:0)
$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>";
您可以使用implode
,但也要确保转义值,以便引号不设置查询。