pdo查询bindparam数组为字符串(或整数)?

时间:2018-04-24 09:43:28

标签: php arrays postgresql pdo

我想用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语句进行管理。

感谢您的帮助!

1 个答案:

答案 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()