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

djmepvbi  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(390)

出于某些原因,我得到了一个错误致命错误:当我执行以下调用时,对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;
     }
}

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

zyfwsgd6

zyfwsgd61#

那是。。。正是你在做的,在null上调用函数。
我们来看看,找出原因!
你在打电话吗

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

让我们看看康恩是什么。

$conn = $mySql->makeSQLConnection();

好的,$conn被分配给$mysql的(createmysql的类)makesqlconnection函数的返回值,让我们看一下。

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

嗯,它什么也不回。在这种情况下,如果将函数的返回值赋给任何对象,则返回值将变为null。
我们通过追溯错误找到了错误的原因。
要获得最简单的修复,请尝试添加 return 之前 $this->connect();

相关问题