我编写了一个函数,该函数应该用数组中的值替换?,但是我无法使其正常工作。

 public function exec($sql, Array $params = array()) {
            if($query = $this->db->prepare($sql)) {
                    $x = 1;
                    if(count($params)) {
                            foreach($params as $param) {
                                    $query->bindParam($x, $param);
                                    $x++;
                            }
                    }
            }
            $query->execute();
            print_r($query);


查询:

$mysql->exec("SELECT * FROM test where id = ?", array(0));


输出:

PDOStatement Object ( [queryString] => SELECT * FROM test where id = ? )

最佳答案

一切正常,之所以在调用?时仍然看到print_r($query);是因为这些值从未真正放入查询本身。

准备语句的工作方式是,当您调用prepare()时,查询将发送到数据库。然后,当您以后调用execute()时,所有值都将发送到数据库,它将完成其余工作。

基本上,您在查询,并且永远不会将值连接或放在一起,这就是为什么您不必转义值的原因。

关于php - PDO bindParam错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19394693/

10-16 15:41