Я получаю сообщение об ошибке при подключении к базе данных. Он работал до того, как веб-сайт хостинга решил удалить php 7 и добавить php 8.3.
Это коды функции соединения:
class App {
function App() {
include('dbInfo.php');
try {
$this->dbConn = new PDO("mysql:host=$host;dbname=$dbName",$dbUser,$dbPass, array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => true
));
} catch (\Throwable $e) {
die("ERROR: ".$e->getMessage());
}
}
function getConfig() {
$sql = $this->dbConn->prepare('SELECT * FROM `config`');
$sql->execute();
$result = $sql->fetchAll();
return $result;
}
}
И это сообщение об ошибке:
Предупреждение: Неопределенное свойство: App::$dbConn в /customers/b/b/1/944.dk/httpd.www/server/dataBase/myServer.php в строке 29
Неустранимая ошибка: необработанная ошибка: вызов функции-члена prepare() для null в /customers/b/b/1/944.dk/httpd.www/server/dataBase/myServer.php:29 Трассировка стека:
#0 /customers/b/b/1/944.dk /httpd.www/server/dataBase/myServer.php(16): App->getConfig()
#1 /customers/b/b/1/944.dk/httpd.www/server/templates/get.php( 5): App->getAll()
#2 /customers/b/b/1/944.dk/httpd.www/server/index.php(3): include_once('/customers/b/b/.. .')
#3 {main} добавлено в /customers/b/b/1/944.dk/httpd.www/server/dataBase/myServer.php в строке 29.
Строка 29 такая:
$sql = $this->dbConn->prepare('SELECT * FROM `config`');
Можете ли вы опубликовать код уровня класса, а также соответствующие методы?
Да, это в классе class App(){.....}






Начиная с PHP 8.0 метод с тем же именем, что и у класса, больше не рассматривается как конструктор:
class Bar {
public function Bar() {
// treated as regular method in PHP 8.0
}
}
Вот почему ваша функция App() никогда не запускалась для создания $this->dbConn.
Вам нужно переименовать его как function __construct(), чтобы сделать его конструктором.
Обновлено: ранее относитесь к изменению PHP 5.3.3. Изменения в PHP 5.3.3 коснулись только классов пространств имен. Изменение в PHP 8.0 затрагивает событие класса без пространства имен.
function App() { это старый стиль __construct
В PHP8 он больше не вызывается автоматически, что приводит к отсутствию параметра класса.
Переименуйте function App() в public function __construct().
Проверьте Конструкторы в старом стиле
Если этот код находится в КЛАССЕ, покажите его как таковой, в противном случае это набор функций, а для набора функций нет
$this