在null上调用成员函数prepare(),不确定原因

时间:2018-11-18 19:34:50

标签: php mysql

由于某种原因,我收到错误致命错误:执行以下调用时,调用null的成员函数prepare():

include_once(createMySQL.php);
$mySql = new createMySQL();
$conn = $mySql->makeSQLConnection();
$entry = $conn->prepare("INSERT INTO thisTable (val1) VALUES (:val)");
$entry->bindParam(":val", $val);
$entry->execute();

这是我的createMySQL类

class createMySQL{

    function makeSQLConnection(){
        $this->connect();
    }

    private function connect(){
        $name = "localhost";
        $db = "thisDatabase";
        $username = "root";
        $password = "";
        try{
            $conn = new PDO("mysql:host=$name; dbname=$db; charset=UTF8", $username, $password);
        }catch(PDOException $e){
            die("PDOException:" . $e->getMessage());
        }
        //echo "success";
        return $conn;
     }
}

我不确定为什么会出现以下错误。有人对此有见识吗?

1 个答案:

答案 0 :(得分:4)

这就是...您正在做什么,在null上调用函数。

让我们看看并尝试找出原因!

您正在打电话

$entry = $conn->prepare("INSERT INTO thisTable (val1) VALUES (:val)");

让我们看看$ conn是什么。

$conn = $mySql->makeSQLConnection();

好的,将$ conn分配给$ mySql(createMySQL的类)makeSQLConnection函数的返回值,让我们看一下。

function makeSQLConnection(){
    $this->connect();
}

嗯,它不返回任何东西。在这种情况下,如果将函数分配给任何内容,则该函数的返回值将为空。

我们通过追溯错误找到了错误原因。

对于最简单的修复,请尝试在return之前添加$this->connect();