У меня есть форма, которая передает две даты (начало и конец) в сценарий PHP, который добавит их в БД. У меня проблемы с подтверждением этого. Я получаю следующие ошибки
Обнаружено некорректное числовое значение
Это когда я использую следующие
date("d",$_GET['start_date']);
Но когда я использую функцию strtotime (), как рекомендуют многие сайты, я получаю дату метки времени unix 1/1/1970. Есть идеи, как я могу получить правильную дату?
php
validation
date
time
Deviland
источник
источник
$_GET['start_date']
содержит.$_GET['start_date']
это не метка времени, которую ожидаетdate
функция в качестве второго аргументаОтветы:
Потому что вы передаете строку в качестве второго аргумента функции даты, которая должна быть целым числом.
Попробуйте strtotime, который проанализирует любое текстовое описание даты и времени на английском языке в метку времени Unix (целое число):
источник
public function __construct(int $someId....)
Просто вы можете решить эту проблему с помощью
strtotime()
функции.источник
$_GET['start_date']
Моя ставка не является числовым, но формат даты не поддерживаетсяstrtotime
. Вам необходимо переформатировать дату работоспособную формат StrToTime или использование комбинации взрываются / указываете ей .Я мог бы добавить вам пример, если бы вы были достаточно любезны, чтобы опубликовать формат, который вы сейчас получаете.
источник
Я столкнулся с той же ситуацией (в моем случае со значением даты в настраиваемом поле PHP в представлении Drupal), и что сработало для меня, так это использование intval вместо strtotime, чтобы превратить значение в целое число - потому что это в основном была метка времени , но в виде строки, а не целого числа. Очевидно, что это подойдет не всем, но, возможно, стоит попробовать.
источник
Эта ошибка возникает, когда вы выполняете вычисления с переменными, в которых буквы сочетаются с цифрами (буквенно-цифровыми), например 24kb, 886ab ...
У меня была ошибка в следующей функции
Приложение загружает изображения, но не работает, отображается следующее предупреждение:
Решение:
intval()
функция извлекает целочисленное значение переменной с буквенно - цифровых данных и создает новую переменную с таким же значением , но преобразуется в целое число сintval()
функцией. Вот код:источник
Это мне очень помогло -
источник
Это старый вопрос, но есть еще один тонкий способ, которым может появиться это сообщение. Это довольно хорошо объяснено здесь, в документации .
Представьте себе этот сценарий:
И
MyCustomExceptionHandler
определяется примерно так:Это фактически вызовет новое исключение в настраиваемом обработчике исключений, поскольку
Exception
класс ожидает число для второго параметра в своем конструкторе, ноPDOException
мог динамически изменить тип возвращаемого значения$e->getCode()
на строку.Обходной путь для этого - определить собственный обработчик исключений, например:
источник
Передача строки не обязательно является проблемой, если она содержит только цифры.
Еще одна причина, по которой это может произойти, заключается в том, что у вас есть пробел до или после. Например, «1557399276»
источник
Если ошибка возникла во время любого вычисления, дважды проверьте, что значения не содержат запятую (,). Значения должны быть только в целочисленном / плавающем формате.
источник
Вам нужно установить часовой пояс с помощью date_default_timezone_set ().
источник
В моем случае это был ключ для sem_get
$ key должен быть целым числом, иначе вы получите следующую ошибку:
источник
если $ _GET ['start_date'] является строкой, тогда преобразуйте ее в целое число или двойное число для обработки числовых значений.
источник