php sql动态bind_param问题

时间:2015-07-21 13:14:26

标签: php mysql sql prepared-statement

我在$ params数组中有3个元素。

当我单独使用$branchid$chainid时,它们工作正常,但是当我使用它们时它不起作用,而且我几乎100%肯定它与“& ;“(参考)组合时。

任何让它发挥作用的想法?

第一var_dump(单过滤器)(这一项工作)

array(2) {
  [0]=>
  &string(1) "s"
  [1]=>
  &string(3) "405"
}

第二个var_dump(两个过滤器)(不工作)

array(3) {
  [0]=>
  &string(2) "ss"
  [1]=>
  &string(3) "329"
  [2]=>
  &string(3) "405"
}


$types = '';
        $params = array(&$types);

        if ($branchid != null) {
            $sql .= "AND a.branchid = ?";
            $types .= 's';
            $params[] = &$branchid;
        }
        if ($chainid != null) {
            $sql .= "AND a.chainid = ?";
            $types .= 's';
            $params[] = &$chainid;
        }

var_dump($params);

// SQL //
        if ($stmt = $this->dbCon->prepare($sql)) {
            //$stmt->bind_param("s", $chainid);
            call_user_func_array(array($stmt, 'bind_param'), $params);

1 个答案:

答案 0 :(得分:0)

我想通了,我需要在第二个过滤器上放一个空格字符,因为当我合并2个过滤器时,$ sql是“AND a = aAND b = b”