Ich habe ein Formular, das zwei Daten (Start und Ende) an ein PHP-Skript übergibt, das diese einer Datenbank hinzufügt. Ich habe Probleme, dies zu bestätigen. Ich erhalte immer wieder die folgenden Fehler
Ein nicht gut gebildeter numerischer Wert trifft auf
Dies ist, wenn ich Folgendes verwende
date("d",$_GET['start_date']);
Wenn ich jedoch die von vielen Websites empfohlene Funktion strtotime () verwende, erhalte ich ein Unix-Zeitstempeldatum vom 1.1.1970. Irgendwelche Ideen, wie ich das richtige Datum bekommen kann?
php
validation
date
time
Deviland
quelle
quelle
$_GET['start_date']
enthält.$_GET['start_date']
ist kein Zeitstempel, der von derdate
Funktion als zweites Argument erwartet wirdAntworten:
Weil Sie eine Zeichenfolge als zweites Argument an die Datumsfunktion übergeben, die eine Ganzzahl sein sollte.
Versuchen Sie es mit strtotime, bei dem jede englische Beschreibung von datetime in einen Unix-Zeitstempel (Ganzzahl) analysiert wird :
quelle
public function __construct(int $someId....)
Sie können dieses Problem einfach mit der
strtotime()
Funktion lösen .quelle
$_GET['start_date']
ist nicht numerisch ist meine Wette, aber ein Datumsformat wird von nicht unterstütztstrtotime
. Sie müssen das Datum für strtotime in ein funktionsfähiges Format umformatieren oder eine Kombination aus explode / mktime verwenden .Ich könnte Ihnen ein Beispiel hinzufügen, wenn Sie so freundlich wären, das Format zu veröffentlichen, das Sie derzeit erhalten.
quelle
Ich bin auf dieselbe Situation gestoßen (in meinem Fall mit einem Datumswert in einem benutzerdefinierten PHP-Feld in einer Drupal-Ansicht), und was für mich funktioniert hat, war die Verwendung von intval anstelle von strtotime, um den Wert in eine Ganzzahl umzuwandeln - da es sich im Grunde um einen Zeitstempel handelte , aber in Form einer Zeichenfolge statt einer Ganzzahl. Natürlich ist das nicht bei allen der Fall, aber es könnte einen Versuch wert sein.
quelle
Dieser Fehler tritt auf, wenn Sie Berechnungen mit Variablen durchführen, die Buchstaben in Kombination mit Zahlen (alphanumerisch) verwenden, z. B. 24 KB, 886ab ...
Ich hatte den Fehler in der folgenden Funktion
Die Anwendung lädt Bilder hoch, hat aber nicht funktioniert. Die folgende Warnung wurde angezeigt:
Lösung: Die
intval()
Funktion extrahiert den ganzzahligen Wert einer Variablen mit alphanumerischen Daten und erstellt eine neue Variable mit demselben Wert, die jedoch mit derintval()
Funktion in eine Ganzzahl konvertiert wird . Hier ist der Code:quelle
Das hat mir sehr geholfen -
quelle
Dies ist eine alte Frage, aber es gibt noch eine andere subtile Möglichkeit, wie diese Nachricht geschehen kann. Es wird hier in den Dokumenten ziemlich gut erklärt .
Stellen Sie sich dieses Szenario vor:
Und
MyCustomExceptionHandler
ist grob definiert als:Dies löst tatsächlich eine neue Ausnahme im benutzerdefinierten Ausnahmehandler aus, da die
Exception
Klasse eine Zahl für den zweiten Parameter in ihrem Konstruktor erwartet,PDOException
den Rückgabetyp von jedoch möglicherweise dynamisch geändert hat$e->getCode()
in eine Zeichenfolge .Eine Problemumgehung hierfür besteht darin, Ihren benutzerdefinierten Ausnahmebehandler wie folgt zu definieren:
quelle
Das Übergeben einer Zeichenfolge ist nicht unbedingt ein Problem, wenn sie nur Ziffern enthält.
Ein weiterer Grund, warum dies passieren kann, ist, wenn Sie vorher oder nachher ein Leerzeichen haben. ZB "1557399276"
quelle
Wenn der Fehler zum Zeitpunkt einer Berechnung auftritt, überprüfen Sie, ob die Werte kein Komma (,) enthalten. Die Werte dürfen nur im Integer / Float-Format vorliegen.
quelle
Sie müssen die Zeitzone mit date_default_timezone_set () festlegen.
quelle
In meinem Fall war es der Schlüssel für sem_get
$ key sollte ein int sein, sonst wird der folgende Fehler angezeigt:
quelle
Wenn $ _GET ['start_date'] eine Zeichenfolge ist, konvertieren Sie sie in eine Ganzzahl oder ein Doppel, um numerisch zu handeln.
quelle