PDO清除绑定参数

时间:2013-03-27 20:42:45

标签: php mysql pdo

我创建了一个“快捷”方法的子对象,例如return_all和其他方法,以PDO作为数据库对象运行。

简而言之,我的所有查询(无论是插入,更新,删除还是选择)都经过两种不同的方法,我调用的最后一种方法就是这样:

/ *      * execute_prepared_sql()将根据用户参数准备SQL:      *      * /

private function execute_prepared_sql() {
    if ($this->prepare_sql() == true) {
        try {
            $this->stmt = $this->pdo->prepare($this->sanitized_sql);
            $this->stmt->execute($this->bound_parameters);
        } catch (PDOException $e) {
            set_debug($e->getMessage(), true);
            return false;
        }
        return true;
    }
    return false;
}

然后我有一些看起来像这样的方法:

 public function return_active_partners() {
    if ($this->select(array("query_tables" => $this->table_name, "conditions" => array("AND" => array("partners.status" => 1))))) {
        $this->stmt->setFetchMode(PDO::FETCH_ASSOC);
        return $this->stmt->fetchAll();
    }
}

上述方法将有效地返回结果($ this-> select()调用execute_prepared_sql()方法。

这一切都很好,但我有这个非常讨厌的问题,有时(并且实际上是随机的)我得到一个“SQLSTATE [HY093]:参数号无效:没有参数被绑定”错误。当我在彼此之后进行2次查询(比如我删除一行然后返回剩余行的结果集)时,似乎会发生更多事情。

在execute_prepared_sql()调用期间,绑定参数不会被删除。我的印象是,当调用execute()时,所有绑定参数都将被“重置”或清除,但情况似乎并非如此。

我的问题是,如何清除PDO语句可能存储的任何绑定参数,以确保我不会两次使用相同的参数?或者还有什么你可以看到哪些我做错了哪个可能是问题?

0 个答案:

没有答案