来自变量的多个WHERE

时间:2014-07-25 14:25:40

标签: php sql

所以我想将国家/地区代码与地区相匹配。

if ($region == 'eu') {
    $country = 'nl', 'be'; etc.. etc..
} 

然后我希望得到所有用户WHERE countrycode是上述之一。

$countryGet = $db->prepare("SELECT countrycode FROM `users` WHERE countrycode = :countrycode DESC LIMIT 100");
$countryGet->execute(array(
    ':countrycode' => $country,
));

也许我想要复杂但我无法找到一个很好的方法来做到这一点。提前谢谢。

1 个答案:

答案 0 :(得分:3)

没有好办法做到这一点。我们必须为准备好的陈述的安全付出代价,这是一个不幸的代价。

试试这个:

if( $region == "eu") {
    $countries = array("nl","be",...);
}

然后:

$sql = "
    SELECT countrycode
    FROM users
    WHERE countrycode IN (".implode(",",array_fill(0,count($countries),"?")).")
";
$countryGet = $db->prepare($sql);
$countryGet->execute($countries);

如果你有其他参数,它会变得更加混乱,但这应该会给你一个想法。