0

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

4

2 回答 2

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)

于 2013-04-24T19:22:53.313 回答
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']));

你的例子很容易被注射。

于 2013-04-24T19:12:13.857 回答