【问题标题】:Call to a member function prepare() on null in [duplicate]在 [重复] 中在 null 上调用成员函数 prepare()
【发布时间】:2020-12-04 13:11:32
【问题描述】:

这是我的代码,我遇到了这个错误

在 null in 上调用成员函数 prepare() 我认为我的课程没问题,但有一个错误,我不知道如何让这段代码运行

<?php
/*$servername = "localhost:3307";
$username = "root";
$password = "";
$dbname = "motorway";*/

class BaseConnect {
    private $conn;

    function __construct() {
    }

    // Create connection
    function connect() {
        $conn = new mysqli("localhost:3307", "root", "", "motorway");
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
        return $this->conn;
    }
}
class Database {
    private $conn;

    function __construct() {
        $db = new BaseConnect();
        $this->conn = $db->connect();
    }

    function Enterdata($name, $phone, $email, $password) {
        $pass = md5($password);
        $sql = $this->conn->prepare("INSERT INTO 'user'('name', 'phone', 'email', 'pass')
    VALUES(?, ?, ?);");
        $sql->bind_param("ssss", $name, $phone, $email, $pass);
        if ($sql->execute()) {
            return 1;
        } else {
            return 2;
        }
    }
}

【问题讨论】:

标签: php mysqli


【解决方案1】:

如果您想使用私人$conn 成员,您必须更改此代码:

$conn = new mysqli("localhost:3307", "root", "", "motorway");
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

用这个:

$this->conn = new mysqli("localhost:3307", "root", "", "motorway");
// Check connection
if ($this->conn->connect_error) {
    die("Connection failed: " . $this->conn->connect_error);
}

无论如何BaseConnect 类是完全多余的,你应该删除它并使用Database 类。

【讨论】:

  • 请不要发布仅指出印刷问题或缺少字符的答案。这样的答案不太可能帮助未来的访问者,因为它们特定于 OP 的代码。相反,请根据help center 标记或投票以将问题关闭为题外话。
  • 这与印刷问题无关。正如我解释的那样(我猜你没有读过),我指定了因为他使用的是类成员,所以他必须使用 $this。这是一个 OP 问题。
  • @GiacomoM 错字是$this 的用法。相对变量很好,只是 return 也必须是相对的。在后面的代码中有$this-&gt;conn = $db-&gt;connect(),它将返回本地连接。
  • 即使在这个意义上它显然是重复的
  • @YourCommonSense 这是重复的,但你仍然可以回答这个问题(并且没有理由拒绝它)。因为它不是一个错字。这显然是一个 OP 问题,因为用户不知道局部变量和成员变量之间的区别。
猜你喜欢
  • 2016-06-27
  • 2018-01-12
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2016-09-11
  • 2020-03-11
相关资源
最近更新 更多