为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 用户注册

PHP 用户注册

PHP
FFIVE 2023-06-30 16:22:17
致命错误:未捕获错误:在 X:\x\x\x\class\auth.php:29 中的 null 上调用成员函数prepare() 堆栈跟踪:#0 x:\x\x\index.php(8 ): Auth->register_user() #1 {main} 在第 29 行的 x:\x\x\x\class\auth.php 中抛出这是数据库连接文件class getDB {    protected $conn;    public $db_host = 'localhost';    public $db_user = 'root';    public $db_pass = '';    public $db_name = 'f_base';    public function getConn() {        try {            $this->conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);            $this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);        } catch ( PDOException $e ) {            die ('<h1>ERROR:</h1><h2>'.$e->getMessage().'</h2>');        }    }    // TODO: Dodati funkcije koje ce moci da ucitaju databazu da bi se prikazalo nesto iz databaze }该类用于注册class Auth {    public function __construct () {        $connection = new getDB();        $this->conn = $connection->getConn();        return $this->conn;    }    public function register_user ( $username, $email, $password, $r_date ) {        $reg_user = $this->conn->prepare("INSERT INTO korisnici ( username, email, password, r_date ) VALUES ( ?, ?, ?, ? )"); // THIS IS LINE I AM GETTING ERROR        $reg_user->execute( array( $username, $email, $password, $r_date ) );            }}我收到错误的这一行 $reg_user = $this->conn->prepare("INSERT INTO korisnici ( username, email, password, r_date ) VALUES ( ?, ?, ?, ? )"); // THIS IS LINE I AM GETTING ERROR
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

你犯了一个简单而常见的错误。检查类getDB方法getConn() - 您没有返回任何导致错误消息“prepare() on null”的内容。您正在尝试在Auth类构造中获取 PDO 连接对象 $this->conn = $connection->getConn();


只需像这样添加回报


class getDB {

protected $conn;


public $db_host = 'localhost';

public $db_user = 'root';

public $db_pass = '';

public $db_name = 'f_base';


public function getConn() {

    try {

        $this->conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);


        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    } catch ( PDOException $e ) {

        die ('<h1>ERROR:</h1><h2>'.$e->getMessage().'</h2>');

    }

    return $this->conn;

}

// TODO: Dodati funkcije koje ce moci da ucitaju databazu da bi se prikazalo nesto iz databaze 

}


查看完整回答
反对 回复 2023-06-30
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信