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

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

Всем привет.

Может кто подсказать, почему данная конструкция вызывает ошибку в 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 ))

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

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...