Какой из них безопаснее использовать в OOP? - PullRequest
1 голос
/ 08 мая 2020

Я изучил эти 2 метода в PDO с помощью OOP, когда изучал его, и хотел бы спросить, какой из них безопаснее использовать? привязка всего, что мы использовали или просто используем? и выполните его.

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()); 
  }
}

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

Второй намного лучше, но все же есть машина go культовая catch. И ничего не возвращает. Должно быть

public function query($query, $params = []){
    $stmt = $this->datab->prepare($query);
    $stmt->execute($params);
    return $stmt;
}

, и его можно использовать для любого запроса, не только для вставки, но также для выбора, обновления, удаления и т. Д.

0 голосов
/ 27 июня 2020

вы можете использовать и то, и другое, но с использованием bind было бы лучше написать все с типами вместо использования switch, а чтобы сделать его короче, вы можете использовать 2.

public function query($query, $params = []){
    global $datab
    $stmt = $datab->prepare($query);
    $stmt->execute($params);
    return $stmt;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...