ООП PDO Запрос null

0
<?php
class User {
  private $conn;
  private $table_name = "users";

  public $id;
  public $firstname;

  public function __construct($db){
      $this->conn = $db;
  }

   public function create(){
     $query = "INSERT INTO
              " . $this->table_name . "
              SET
              firstname = :firstname";

        $stmt = $this->conn->query($query);

        $this->firstname=htmlspecialchars(strip_tags($this->firstname));

        $stmt->bindParam(':firstname', $this->firstname);

        if($stmt->execute()){
          return true;
        }else {
          $this->showError($stmt);
          return false;
        }
    }
}

Ошибка поиска: вызов функции-члена()

Почему мой запрос равен NULL?


Когда я делаю var_dump для использования, все идет хорошо, но я не понимаю, почему мой запрос равен нулю

  • 1
    Вы имеете в виду ООП?
  • 0
    Убедитесь, что вы правильно подключены к вашей БД. Он говорит, что не может вызвать query для вашего $ this-> conn, так как это не объект.
Показать ещё 4 комментария
Теги:
pdo

1 ответ

2

Ты бегаешь

$stmt = $this->conn->query($query);

Это неверно и не будет выполнено, так как запрос имеет параметр firstname = :firstname то есть firstname = :firstname

Вы должны бежать

Prepare
bindParam
execute

В этой последовательности

Также этот запрос

$query = "INSERT INTO" . $this->table_name . "
            SET firstname = :firstname";

Когда он мчит, изменится firstname в каждой строке в этой таблице на то, что в $this->firstname

И не ясно, что вы действительно установили значение там ИЛИ в свойстве $conn.

  • 0
    А также тот факт, что $this->firstname никогда не устанавливается, если OP просто не показывает нам это в коде
  • 0
    @SamSwift 웃 Да, я тоже это заметил
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню