Перейти к публикации

Рекомендованные сообщения

Всем привет.

Может кто подсказать, почему данная конструкция вызывает ошибку в php 8.0? В php 7.4 и ниже всё прекрасно работает.

$list_banner = $db->query("SELECT `end`, `rubric`, `descr` FROM " . PREFIX . "_banners WHERE rubric=1 or rubric=2 or rubric=3 or rubric=4 or rubric=5 ORDER BY end");

while ($list_banner_result = mysqli_fetch_array($list_banner)) {

	$date_banner = date('j F Y года', $list_banner_result['end']);

}
Fatal error: Uncaught TypeError: date(): Argument #2 ($timestamp) must be of type ?int, string given in D:\OpenServer\domains\new.gusev-online.ru\engine\modules\accounting_spisok_sait.php:175 Stack trace: #0 D:\OpenServer\domains\new.gusev-online.ru\engine\modules\accounting_spisok_sait.php(175): date() #1 D:\OpenServer\domains\new.gusev-online.ru\engine\classes\templates.class.php(429): include('D:\\OpenServer\\d...') #2 [internal function]: dle_template->load_file() #3 D:\OpenServer\domains\new.gusev-online.ru\engine\classes\templates.class.php(1279): preg_replace_callback() #4 D:\OpenServer\domains\new.gusev-online.ru\engine\modules\static.php(383): dle_template->compile() #5 D:\OpenServer\domains\new.gusev-online.ru\engine\engine.php(79): include('D:\\OpenServer\\d...') #6 D:\OpenServer\domains\new.gusev-online.ru\engine\init.php(1054): include_once('D:\\OpenServer\\d...') #7 D:\OpenServer\domains\new.gusev-online.ru\index.php(26): require_once('D:\\OpenServer\\d...') #8 {main} thrown in D:\OpenServer\domains\new.gusev-online.ru\engine\modules\accounting_spisok_sait.php on line 175

Заранее признателен всем за подсказку

Ссылка на сообщение
Поделиться на других сайтах

Ну причина написана вполне понятна. Аргументы даты должен быть типом числом с типом int, а вы передаете строку, а не число. видимо в БД у вас тип строковый указан. Соответственно, либо в БД end изменить со строки на число, либо строку привести к числу, например

$date_banner = date('j F Y года', (int) $list_banner_result['end']);

 

41 минуту назад, radrigo сказал:

php 8.0? В php 7.4 и ниже всё прекрасно работает.

Потому что в PHP уже строгая типизация данных ))) написано что функции нужно передать int, значит будь добр передать int a не string ))

  • Нравится 1
Ссылка на сообщение
Поделиться на других сайтах

Всё получилось, спасибо))

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...