由于某种原因,我收到错误致命错误:执行以下调用时,调用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;
}
}
我不确定为什么会出现以下错误。有人对此有见识吗?
答案 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();