在 OOP 中使用哪个更安全?

我在学习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()); 

  }

}


温温酱
浏览 195回答 2
2回答

MM们

第二个要好得多,但仍然存在货物崇拜catch。它不返回任何东西。应该public function query($query, $params = []){    $stmt = $this->datab->prepare($query);    $stmt->execute($params);    return $stmt;}它可以用于任何查询,不仅可以插入,还可以选择、更新、删除等。

隔江千里

您可以同时使用两者,但是使用 bind 可以更好地编写所有类型而不是使用 switch 并且为了缩短您可以使用 2.public function query($query, $params = []){    global $datab    $stmt = $datab->prepare($query);    $stmt->execute($params);    return $stmt;}
打开App,查看更多内容
随时随地看视频慕课网APP