我刚刚从MySQL切换到PDO,我正在使用预备语句。
我曾经拥有MySQL的功能,在每一页上我都做了类似的事情
$Query = "UPDATE users SET f_name={$POST["first_name"]}, l_name={$_POST["last_name"]} ";
$SQL_obj->runquery($query, "update");
现在使用PDO和预处理语句是否有意义创建函数或者只对每个查询执行prepare(),bindValue()和execute()?
我似乎无法写出好的PDO功能。有人可以建议吗?我的代码主要是程序性的。
答案 0 :(得分:2)
您可以扩展PDO并添加一个辅助方法,同时执行这两个操作:
class MyPDO extends PDO{
public function prepareAndExecute($sql){
// get all arguments passed to this function as an array
$args = func_get_args();
// drop first argument ($sql)
array_shift($args);
$stm = $this->prepare($sql);
$stm->execute($args);
return $stm;
}
}
然后:
$results = $connection->prepareAndExecute(
'UPDATE users SET f_name=?, l_name=?',
$POST["first_name"],
$_POST["last_name"]
);
($connection
= MyPDO
的实例)
答案 1 :(得分:0)
PDO已经是一个类了,所以在它周围编写一个“包装器”有点过分了。只需使用这种方式:
$Query = "UPDATE users SET f_name=:firstname, l_name=:lastname ";
$sth = $dbh->prepare($Query);
$sth->execute(array(':firstname' => $_POST['firstname'], ':lastname' => $_POST['lastname']));
你的榜样容易受到注射。