OOP PDO查询为空

时间:2018-07-04 16:24:19

标签: php mysql pdo

<?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上调用成员函数query()

     

为什么我的查询为NULL?


当我创建一个var_dump以使用一切正常时,但我不明白为什么查询为空

1 个答案:

答案 0 :(得分:2)

您正在跑步

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

这是不正确的,并且由于查询具有可绑定的参数即firstname = :firstname

而失败

您必须运行

Prepare
bindParam
execute

按此顺序

也是这个查询

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

当它运行时,会将表中每一行的firstname更改为$this->firstname中的任何内容

尚不清楚您是否实际上在$conn属性中在那里设置了一个值。