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



由于某些原因,我收到错误致命错误:当我执行以下调用时,在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;
}
}

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

这正是您正在做的,在null上调用函数。

让我们来看看并找出原因!

您正在呼叫

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

让我们看看$conn是什么。

$conn = $mySql->makeSQLConnection();

好吧,$conn被分配给$mySql(createMySQL的类(makeSQLConnection函数的返回值,让我们来看看它

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

嗯,它什么也不回。在这种情况下,如果您将函数的返回值分配给任何对象,它将变为null。

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

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

相关内容

最新更新