Heim > Datenbank > MySQL-Tutorial > Wie löse ich Datumsformatkonflikte beim Einfügen von Datumsangaben aus PHP in MySQL?

Wie löse ich Datumsformatkonflikte beim Einfügen von Datumsangaben aus PHP in MySQL?

DDD
Freigeben: 2024-12-06 18:14:11
Original
317 Leute haben es durchsucht

How to Resolve Date Format Conflicts When Inserting Dates from PHP into MySQL?

Datumsformatdiskrepanzen bei PHP-MySQL-Einfügungen

Beim Versuch, Datumsangaben mit PHP in eine MySQL-Datenbank einzufügen, können Benutzer aufgrund von Fehlern auf Fehler stoßen Formatkonflikte. Das beliebte jQuery-Datumsauswahlformat „25.08.2012“ steht in Konflikt mit den von MySQL unterstützten Datumsformaten.

Um dieses Problem zu beheben, ist es wichtig, die Datumsliteralanforderungen von MySQL zu verstehen:

  1. String-Formate: JJJJ-MM-TT oder JJ-MM-TT, mit optionalen Trennzeichen. Beispiele: '2012-12-31', '2012/12/31', '2012^12^31'.
  2. Trennungslose Zeichenfolgenformate: JJJJMMTT oder JJMMTT. Beispiele: „20070523“, „070523“ (interpretiert als „23.05.2007“).
  3. Numerische Formate: JJJJMMTT oder JJMMTT. Beispiele: 19830905, 830905 (interpretiert als „05.09.1983“).

Da das Format „25.08.2012“ nicht diesen Regeln entspricht, muss es konvertiert werden. Es stehen mehrere Optionen zur Verfügung:

1. Konvertieren Sie das jQuery Datepicker-Format

Konfigurieren Sie den Datepicker so, dass Datumsangaben in einem unterstützten Format bereitgestellt werden:

$( "selector" ).datepicker({
    altField : "#actualDate"
    altFormat: "yyyy-mm-dd"
});
Nach dem Login kopieren

Oder legen Sie die dateFormat-Option fest:

$( "selector" ).datepicker({
    dateFormat: "yyyy-mm-dd"
});
Nach dem Login kopieren

2. Verwenden Sie die STR_TO_DATE()-Funktion von MySQL

Konvertieren Sie die Zeichenfolge während des Einfügens:

INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
Nach dem Login kopieren

3. Konvertieren mit dem DateTime-Objekt von PHP

Erhalten Sie eine geeignete formatierte Zeichenfolge oder einen UNIX-Zeitstempel:

$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
$date = $dt->format('Y-m-d');
$timestamp = $dt->getTimestamp();
Nach dem Login kopieren

Für das Einfügen von UNIX-Zeitstempeln:

INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
Nach dem Login kopieren

4 . Manuelle String-Manipulation

Extrahieren Sie die Datumsteile und verketten Sie sie in einem gültigen Format:

$parts = explode('/', $_POST['date']);
$date  = "$parts[2]-$parts[0]-$parts[1]";
Nach dem Login kopieren

Achtung:

  • Verwenden Sie vorbereitete Anweisungen, um SQL-Injection zu verhindern.
  • Erwägen Sie die Verwendung des DATE-Typs anstelle von DATETIME oder TIMESTAMP für reine Datumswerte.

Das obige ist der detaillierte Inhalt vonWie löse ich Datumsformatkonflikte beim Einfügen von Datumsangaben aus PHP in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage