我知道这可能之前已被问过,但我发现的其他主题的答案似乎对我没有帮助:/。我不确定当我遵循答案时我做错了什么,但它让我烦恼。
错误:在第15行调用未定义的方法DB_Class :: prepare()。我已添加注释行来标记它。
代码是荷兰语,我希望这不是问题。
Reg_Functies.php(或至少相关部分):
<?php
require_once("Reg_Config.php");
class Gebruiker
{
private $db;
public function Gebruiker()
{
$this->db = new DB_Class();
}
public function check_login($email, $wachtwoord)
{
$wachtwoord = md5($wachtwoord);
$resultaat = $this->db->prepare("SELECT Log_ID, Log_Bevoegdheid from login WHERE Log_Email = ? and Log_Wachtwoord = ?"); //this line gives the error
$resultaat->bind_param("ss", $email, $wachtwoord);
$resultaat->execute();
Reg_Config.php:
<?php
define('DB_Server', 'localhost');
define('DB_Gebruikersnaam', 'root');
define('DB_Wachtwoord', 'password');
define('DB_Database', 'database');
class DB_Class
{
function __construct()
{
$connection = mysqli_connect(DB_Server, DB_Gebruikersnaam, DB_Wachtwoord, DB_Database);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
}
}
&GT;
这可能是我正在寻找的非常简单的事情,但非常感谢帮助。
答案 0 :(得分:2)
您的代码正在尝试致电DB_Class::prepare()
,因为$this->db
已被分配new DB_Class()
。
首先,构造函数应保留mysqli
连接对象的副本,因此添加一个字段
private $connection;
到DB_Class
类,并更新构造函数以便它调用
$this->connection = $connection;
最后。
然后,您需要定义prepare
方法,在mysqli_prepare($this->connection)
中调用DB_Class()
,或致电$this->db->connection->prepare()
。如果您选择最后一个选项,则需要将其设为public
字段,而不是!
另一个更好的选择是避免创建这个多余的DB_Class
并改为使用PDO
。