Mam formularz, który przekazuje dwie daty (początek i koniec) do skryptu PHP, który doda je do bazy danych. Mam problemy z potwierdzeniem tego. Ciągle otrzymuję następujące błędy
Napotkano nieprawidłową wartość liczbową
Wtedy używam następującego
date("d",$_GET['start_date']);
Ale kiedy używam funkcji strtotime () zgodnie z zaleceniami wielu witryn, otrzymuję datę unixowego znacznika czasu 1/1/1970. Jakieś pomysły, jak uzyskać prawidłową datę?
php
validation
date
time
Deviland
źródło
źródło
$_GET['start_date']
zawiera.$_GET['start_date']
nie jest to znacznik czasu, który jest oczekiwany przezdate
funkcję jako drugi argumentOdpowiedzi:
Ponieważ jako drugi argument funkcji daty przekazujesz ciąg znaków, który powinien być liczbą całkowitą.
Wypróbuj strtotime, który przeanalizuje dowolny angielski tekstowy opis daty i godziny do uniksowego znacznika czasu (liczby całkowitej):
źródło
public function __construct(int $someId....)
Po prostu możesz rozwiązać ten problem za pomocą
strtotime()
funkcji.źródło
$_GET['start_date']
mój zakład nie jest numeryczny, ale format daty nie jest obsługiwany przezstrtotime
. Będziesz musiał ponownie sformatować datę do działającego formatu dla strtotime lub użyć kombinacji eksplodowania / mktime .Mógłbym dodać przykład, gdybyś był na tyle uprzejmy, aby opublikować format, który obecnie otrzymujesz.
źródło
Wpadłem na tę samą sytuację (w moim przypadku z wartością daty w niestandardowym polu PHP w widoku Drupal) i to, co zadziałało, to użycie intval zamiast strtotime, aby zamienić wartość na liczbę całkowitą - ponieważ w zasadzie był to znacznik czasu , ale w postaci łańcucha, a nie liczby całkowitej. Oczywiście nie dotyczy to wszystkich, ale warto spróbować.
źródło
Ten błąd występuje, gdy wykonujesz obliczenia ze zmiennymi, które używają liter połączonych z liczbami (alfanumerycznymi), na przykład 24kb, 886ab ...
Wystąpił błąd w następującej funkcji
Aplikacja przesyła obrazy, ale nie działa, wyświetla następujące ostrzeżenie:
Rozwiązanie:
intval()
funkcja wyodrębnia całkowitą wartość zmiennej z danych alfanumerycznych i tworzy nową zmienną o takiej samej wartości, ale przekształca się całkowitą zintval()
funkcji. Oto kod:źródło
To mi bardzo pomogło -
źródło
To stare pytanie, ale istnieje inny subtelny sposób, w jaki może się wydarzyć ta wiadomość. Całkiem dobrze wyjaśniono to tutaj, w dokumentacji .
Wyobraź sobie ten scenariusz:
I
MyCustomExceptionHandler
jest z grubsza zdefiniowany tak:W rzeczywistości spowoduje to wyzwolenie nowego wyjątku w niestandardowej obsłudze wyjątków, ponieważ
Exception
klasa oczekuje liczby dla drugiego parametru w swoim konstruktorze, alePDOException
mogła dynamicznie zmienić zwracany typ$e->getCode()
na ciąg.Obejściem tego problemu byłoby zdefiniowanie niestandardowej obsługi wyjątków, takiej jak:
źródło
Przekazanie łańcucha niekoniecznie stanowi problem, jeśli zawiera tylko cyfry.
Innym powodem, dla którego może się to zdarzyć, jest spacja przed lub po. Np. „1557399276”
źródło
Jeśli błąd występuje w momencie jakichkolwiek obliczeń, sprawdź dokładnie, czy wartości nie zawierają przecinka (,). Wartości muszą być podane tylko w formacie liczb całkowitych / zmiennoprzecinkowych.
źródło
Musisz ustawić strefę czasową za pomocą date_default_timezone_set ().
źródło
W moim przypadku był to klucz do sem_get
$ key powinien być int, w przeciwnym razie pojawi się następujący błąd:
źródło
jeśli $ _GET ['data_początkowa'] jest ciągiem znaków, zamień go na liczbę całkowitą lub podwójną, aby uzyskać dane liczbowe.
źródło