我正在编写一个代码,我必须使用许多OR语句生成一个查询,我认为有一种比这更简单的方法:
foreach ($plz as &$value) {
if (empty($i)) {
$query = "WHERE plz='$value'";
} else {
$query = "$query OR plz='$value'";
}
$i++;
}
$sql = mysql_query("SELECT * FROM table $query");
while ($data = mysql_fetch_array($sql)) {
//do something
}
答案 0 :(得分:2)
答案 1 :(得分:2)
如果列可能有多个值,只需使用IN
运算符连接它们:
而不是写
... WHERE col=1 OR col=2 OR col=3
写一下
... WHERE col IN (1,2,3)
要收集PHP中的所有条目,请稍后使用数组和implode()
:
// collecting values
$vals = array();
$vals[] = 1;
$vals[] = 2;
// ...
// add them to your query
$query .= ' WHERE col IN ( ' . implode( ',', $vals ) . ')';
// execute the query ...
如果您的值不是整数,但需要用查询中的撇号括起来,那么首先将它们插入到数组中:
$vals[] = "'my string value'";
答案 2 :(得分:1)
如果列plz
是INT类型,并且所有$plz
也是整数,那么:
$query = 'WHERE plz IN( ' . implode(',', $plz) . ')';
会奏效。否则,尝试这可能会起作用(未经测试):
$query = 'WHERE plz IN( \'' . implode("','", $plz) . '\')';