如何制作动态bindValue()?

时间:2013-05-02 18:43:15

标签: php pdo bindvalue

好的,我有一个名为sendQuery的函数,可以发送您的查询。 我知道如何使用BindParams,但我真的想不出一种方法可以使它在execute中使用绑定值。

这是代码:

    public function sendQuery($query, array $value, $do_fetch)
    {
        $query_process = $this->db->prepare($query);
        if(!$query_process->execute($binds))
        {
            throw new excpetion ("An error has occured!");
        }

        $this->insert = $this->db->lastInsertId();

        $this->row_count = $query_process->rowCount();

        if($fetch == true)
        {
            return $query_process->fetchAll();
        }
    }

如您所见,它以$ binds执行,

像(WHERE user =?)一样工作,但我想发送这样的查询: (WHERE user =:user)而不是'? ',以及其中的多个。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你必须完全一样。
只需摆脱无用的代码并使用一致的变量命名

public function sendQuery($query, array $binds, $do_fetch)
{
    $stm = $this->db->prepare($query);
    $stm->execute($binds);
    $this->insert = $this->db->lastInsertId();
    $this->row_count = $stm->rowCount();

    if($do_fetch)
    {
        return $stm->fetchAll();
    }
}

$sql   = "SELECT * FROM t WHERE c1=:name AND c2=:age";
$param = array ("name" => $name,"age" => $age);
$data  = $db->sendQuery($sql, $data, 1);

然而,我会创建一组函数而不是单个函数:

  • query()运行非选择查询
  • getOne()预先选择并返回标量值
  • getRow()返回一行
  • getAll返回所有行

它可能非常方便