我刚刚从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函数。有人能建议一下吗?我的代码大部分是过程式的
您可以扩展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
的实例)
PDO已经是一个类了,所以在它周围写一个"包装器"有点过分了。请这样使用:
$Query = "UPDATE users SET f_name=:firstname, l_name=:lastname ";
$sth = $dbh->prepare($Query);
$sth->execute(array(':firstname' => $_POST['firstname'], ':lastname' => $_POST['lastname']));
你的例子很容易被注射。