PHP使用IN(...)子句编写带动态WHERE子句的语句

时间:2014-01-26 22:11:26

标签: php sql

我在PHP脚本中遇到IN()子句的问题,我在POST请求中从另一个页面接收数据,如下所示:

if( isset($_POST['mycountry'])){        
    if($_POST['mycountry']) $where[] = 'pays in ( :pays )';
};

$ _ POST ['mycountry']:包含用户选择的国家/地区(用户可以选择零个或多个国家/地区)

如果用户选择国家/地区,我会将相关列和值(国家/地区)添加到IN子句中。

if(isset($_POST['mycountry'])){ 
$tags = implode(', ', $_POST['mycountry']);
$stmt->bindParam(':pays', $tags, PDO::PARAM_BOOL);  
}

当用户选择零或只有一个国家时,它可以正常工作,一旦用户选择多个国家,它就不会返回任何内容!!

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我确实知道在oracle中你不能将数组绑定到单个var。我认为PDO也是如此。

您需要做的是为每个循环运行一个并创建一对一的绑定,并将原始绑定替换为您生成的新的一对一绑定。 (并且当然更新绑定数组以生成您生成的键值对)