这是三个文件
Database.php
Admin.php
我得到一个错误“Fatal error:Uncattle error:Call to a member function prepare()on null”。这段代码运行在我的localhost上没有问题,但是当它上传到服务器时,我就出现了这个问题。我在本地使用PHP8和xammp软件。我是三年级学生,请帮帮我。
文件database.php:
class Database{
private $dbhost = 'localhost';
private $dbname = 'pubg';
private $dbuser = 'root';
private $dbpass = '';
protected $connect;
public function __construct()
{
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
];
try {
$this->connect = new PDO('mysql:host='.$this->dbhost.';dbname='.$this->dbname, $this->dbuser, $this->dbpass, $options);
}catch (Exception $err){
echo $err->getMessage();
}
}
// select
public function select($sql, $value = [], $fetch = 'fetch')
{
$result = $this->connect->prepare($sql);
foreach ($value as $key => $item){
$result->bindValue($key + 1, $item);
}
$result->execute();
if($fetch == 'fetch'){
$row = $result->fetch(PDO::FETCH_OBJ);
return $row;
}else{
$row = $result->fetchAll(PDO::FETCH_OBJ);
return $row;
}
}
}
文件admin.php
require_once 'Database.php';
class Admin extends Database{
public function checkHasAdmin($chat_id)
{
$sql = "SELECT * FROM table_admin WHERE chat_id = ?";
return $this->select($sql,[$chat_id]);
}
public function Admin()
{
$sql = "SELECT * FROM table_admin";
return $this->select($sql,[]);
}}
在PHP<8中,赋予一个与类同名的方法被认为是构造函数(即使它已经被弃用很长时间并触发警告)。
因此,当您在PHP<8中实例化admin
类时,它将调用admin::__construct
,而该类不调用父构造函数(没有parent::__construct
),因此它将尝试执行$this->select
,而不初始化对象(及其$connect
属性),因此会出现错误。
但是,在本地运行的PHP8中,这种构造函数已经被完全删除,因此它是一种普通的方法,在实例化admin
对象时不会被调用。
这里有一个小演示展示了两者的区别。请注意,在PHP8中,什么都不会打印出来,而在以前的版本中,会出现“hello”。
解决方案:将admin
方法重命名为其他方法。
$this->connect
为空,因为您需要实例化您的类。
从不使用__construct()
方法。
像这样:
public function checkHasAdmin($chat_id)
{
$db = new Database();
$sql = "SELECT * FROM table_admin WHERE chat_id = ?";
return $db->select($sql,[$chat_id]);
}
我一直被这个错误困扰,请帮助我这是我的PHP代码致命错误:调用成员函数bind_param()
问题内容: 我试图与XAMPP和MySQL服务器建立简单连接,但是每当我尝试输入数据或连接到数据库时,都会出现此错误。 致命错误:未捕获错误:在C:\ xampp \ htdocs \ register.php:22中调用未定义函数mysql_connect() 堆栈跟踪:#0 {main}在第22行的C:\ xampp \ htdocs \ register.php中抛出 第22行的示例: 问题
我在尝试访问http://localhost/phpmyadmin/时收到以下错误: 在这里回顾了类似的主题后,我做了以下工作: null 我运行的是Windows10,Apache2.4-64bits、PHP7-64bits和mysqlserver5.7。Apache运行良好,PHP也运行良好(访问info.PHP无需担心) 谢了。
我正在按照一个在线教程来创建一个迷你购物车,一切都很顺利,但现在我得到了这个错误: 致命错误:未捕获错误:调用未定义函数mysql_query()
运行以下代码时会出现此错误: PHP致命错误:未捕获错误:调用chk_discount中的未定义函数mysqli_result()。PHP:21 以下是完整的代码: 我应该如何编辑代码?
我在Codeigniter中发现了这些错误。 C:\xampp1\htdocs\CI\system\database\drivers\mysql\mysql\u驱动程序。php:92堆栈跟踪:#0 C:\xampp1\htdocs\CI\system\database\DB_驱动程序。php(116):CI_DB_mysql_驱动程序- 模范班 视图类 控制器类 数据库php