2

我正在编写一个代码,我必须在其中生成一个包含许多 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
}
4

3 回答 3

2

您正在寻找 ;

SELECT * FROM table WHERE plz in ('value1', 'value2', 'value3')

注意SQL 注入...

于 2012-09-27T07:11:00.820 回答
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'";
于 2012-09-27T07:12:02.203 回答
1

如果列plz是 INT 类型,并且$plz都是整数,那么:

$query = 'WHERE plz IN( ' . implode(',', $plz) . ')';

会工作。否则,尝试这可能会起作用(未经测试):

$query = 'WHERE plz IN( \'' . implode("','", $plz) . '\')';
于 2012-09-27T07:10:43.187 回答