我在学习PDO with OOP的时候学习了这2个方法,请问哪个用起来更安全?绑定我们使用的所有东西还是只使用?并执行它。1: public function query($query) { $this->stmt = $this->dbh->prepare($query);}public function bind($param, $value, $type = null) { if (is_null($type)) { switch(true){ case is_int($value): $type = PDO::PARAM_INT; break; case is_bool($value): $type = PDO::PARAM_BOOL; break; case is_null($value): $type = PDO::PARAM_NULL; break; default: $type = PDO::PARAM_STR; } } $this->stmt->bindValue($param, $value, $type);}public function execute(){ return $this->stmt->execute();}public function lastInsertId(){ $this->dbh->lastInsertId();}或 2: public function insertRow($query, $params = []){ try { $stmt = $this->datab->prepare($query); $stmt->execute($params); return TRUE; } catch (PDOException $e) { throw new Exception($e->getMessage()); }}
2 回答
MM们
TA贡献1886条经验 获得超2个赞
第二个要好得多,但仍然存在货物崇拜catch。它不返回任何东西。应该
public function query($query, $params = []){
$stmt = $this->datab->prepare($query);
$stmt->execute($params);
return $stmt;
}
它可以用于任何查询,不仅可以插入,还可以选择、更新、删除等。
隔江千里
TA贡献1906条经验 获得超10个赞
您可以同时使用两者,但是使用 bind 可以更好地编写所有类型而不是使用 switch 并且为了缩短您可以使用 2.
public function query($query, $params = []){
global $datab
$stmt = $datab->prepare($query);
$stmt->execute($params);
return $stmt;
}
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报
0/150
提交
取消
