gpt4 book ai didi

php - 第 18 行出现 fatal error : Call to a member function prepare() on a non-object in C:\wamp\www\motor-house\public_html\User. class.php

转载 作者:行者123 更新时间:2023-11-30 00:34:30 25 4
gpt4 key购买 nike

我正在尝试从包含登录表单的索引文件连接到数据库。我已经创建了数据库的实例,但收到错误。

“ fatal error :在第 18 行对 C:\wamp\www\motor-house\public_html\User.class.php 中的非对象调用成员函数prepare()”

我的数据库类代码是:

class Connection{

public function Connect(){
try{
$handler = new PDO('mysql:host=127.0.0.1;dbname=cars', 'root', '');
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo $e->getMessage();
die();
}

echo "rest of script";
}

}

我的用户类代码:

include_once("db.class.php");

class User{
private $db;

//make the connection
public function __construct(){
$this->db = new Connection();
$this->db = $this->db->Connect();
}

//Login
public function Login($username, $password){
$query = $this->db->prepare("SELECT * FROM users");
$query = bindParam(1, $username);
$query = bindParam(2, $password);
$query->execute();

if($query->rowCount() == 1){
echo "Granted";
}else{
echo "Check credentals again";
}
}
}

最佳答案

@Mat 是正确的。您正在实例化一个新对象并将其分配给此行上的属性 $db:

    $this->db = new Connection();

但是您将在下一行中覆盖该分配:

    $this->db = $this->db->Connect();

因此,您不再拥有包含方法 prepare() 的实例化对象。

将其更改为:

//make the connection
public function __construct(){
$this->db = new Connection();
$this->db->Connect();
}

关于php - 第 18 行出现 fatal error : Call to a member function prepare() on a non-object in C:\wamp\www\motor-house\public_html\User. class.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com