我想用IN运算符进行pdo pgsql查询,其中值 - 来自变量的值 - 也包含单个id-s,以及来自id-s的数组:
更新:
if ($_POST['select'] == '1') {
$id= 109;
} elseif ($_POST['select'] == '2') {
$id= 111;
} elseif ($_POST['select'] == '3') {
$id= 117;
} elseif ($_POST['select'] == '4') {
$id= 114;
} elseif ($_POST['select'] == '5') {
$id= [108, 107, 101, 103];
} else {
$id=NULL;
}
查询如下:
$result = "SELECT * FROM table
WHERE table.id IN (:id)";
$query = $pgConn->prepare($result);
$query->bindparam(':id', $id);
$query->execute();
我尝试以多种方式将数组转换为sting,但查询始终返回相同的错误:“整数的输入语法无效”
一次尝试:
$ids_string = "'".implode("','", $id)."'";
返回: 整数的输入语法无效:“'108','107','101','103'”'
另一个 - 辅助 - 问题是使用同一个变量中的单个和数组id-s但我认为以后可以使用if-else语句进行管理。
感谢您的帮助!
答案 0 :(得分:0)
根据PHP.net关于bindParam()和Predefined PDO Constants。您可以指定要绑定的varibale的类型。因此,为了避免PDO将您的字符串视为数字,请执行以下操作:
element(by.xpath("//a[contains(@ng-click,'nodes.setViewType(\'tiles\',true)')]"));
element(by.css("span[ng-class^=nodes.viewType == \'tiles\']"));
element(by.xpath("//a[contains(@ng-click,'nodes.setViewType%28%27tiles%27%2Ctrue%29')]"));
修改
要解决将数组绑定到$query -> bindValue (':id', $id, PDO::PARAM_STR);
的问题,我想你将不得不使用两个循环。一个用于创建占位符,另一个用于绑定参数。
以下是您的案例示例:
IN()