我已经写了一个函数,应该用数组中的值替换?,但是我不能让它工作。
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 = ? )发布于 2013-10-16 11:48:25
一切都很正常,在调用print_r($query);时仍然可以看到?的原因是,这些值实际上从未被放入查询本身。
预准备语句的工作方式是,当您调用prepare()时,查询将被发送到数据库。然后,当您稍后调用execute()时,所有的值都将被发送到数据库,它将执行其余的工作。
基本上你是在查询,值永远不会连接或放在一起,这也是为什么你不需要转义值的原因。
发布于 2013-10-16 11:52:09
试一试
$result = $query->fetchAll();
print_r($result);而不是
print_r($query);https://stackoverflow.com/questions/19394693
复制相似问题