radrigo 180 Опубликовано: 6 октября 2021 Рассказать Опубликовано: 6 октября 2021 Всем привет. Может кто подсказать, почему данная конструкция вызывает ошибку в 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 Заранее признателен всем за подсказку Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 6 октября 2021 Рассказать Опубликовано: 6 октября 2021 Ну причина написана вполне понятна. Аргументы даты должен быть типом числом с типом 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 Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 180 Опубликовано: 6 октября 2021 Рассказать Опубликовано: 6 октября 2021 Автор Всё получилось, спасибо)) Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.