在程序环境中使用PDO的最佳方法

时间:2013-04-24 19:09:37

标签: php pdo

我刚刚从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功能。有人可以建议吗?我的代码主要是程序性的。

2 个答案:

答案 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']));

你的榜样容易受到注射。