0

我编写了一个函数,应该用数组中的值替换 ?,但我无法让它工作。

 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 = ? )
4

2 回答 2

1

一切正常,您仍然看到?while 调用的原因print_r($query);是因为这些值实际上从未被放入查询本身。

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

基本上你是查询并且值永远不会被连接或组合在一起,这也是你不必逃避这些值的原因。

于 2013-10-16T03:48:25.100 回答
-1

尝试

$result = $query->fetchAll();
print_r($result);

代替

print_r($query);
于 2013-10-16T03:52:08.710 回答