我在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);
}
当用户选择零或只有一个国家时,它可以正常工作,一旦用户选择多个国家,它就不会返回任何内容!!
有什么想法吗?
答案 0 :(得分:0)
我确实知道在oracle中你不能将数组绑定到单个var。我认为PDO也是如此。
您需要做的是为每个循环运行一个并创建一对一的绑定,并将原始绑定替换为您生成的新的一对一绑定。 (并且当然更新绑定数组以生成您生成的键值对)