Maison >base de données >tutoriel mysql >Comment résoudre les conflits de format de date lors de l'insertion de dates de PHP dans MySQL ?

Comment résoudre les conflits de format de date lors de l'insertion de dates de PHP dans MySQL ?

DDD
DDDoriginal
2024-12-06 18:14:11275parcourir

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

Différences de format de date dans les insertions PHP MySQL

Lors d'une tentative d'insertion de dates dans une base de données MySQL à l'aide de PHP, les utilisateurs peuvent rencontrer des erreurs dues à incohérences de format. Le format de sélecteur de date jQuery populaire, "25/08/2012", est en conflit avec les formats de date pris en charge par MySQL.

Pour résoudre ce problème, il est essentiel de comprendre les exigences littérales de date de MySQL :

  1. Formats de chaîne : AAAA-MM-JJ ou AA-MM-JJ, avec délimiteurs facultatifs. Exemples : '2012-12-31', '2012/12/31', '2012^12^31'.
  2. Formats de chaîne illimités : AAAAMMJJ ou AAMMJJ. Exemples : '20070523', '070523' (interprété comme '2007-05-23').
  3. Formats numériques : AAAAMMJJ ou AAMMJJ. Exemples : 19830905, 830905 (interprété comme '1983-09-05').

Le format "25/08/2012" n'étant pas conforme à ces règles, il doit être converti. Plusieurs options sont disponibles :

1. Convertir le format jQuery Datepicker

Configurez le sélecteur de date pour fournir les dates dans un format pris en charge :

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

Ou définissez l'option dateFormat :

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

2. Utilisez la fonction STR_TO_DATE() de MySQL

Convertissez la chaîne lors de l'insertion :

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

3. Convertir à l'aide de l'objet DateTime de PHP

Obtenir une chaîne formatée appropriée ou un horodatage UNIX :

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

Pour l'insertion d'un horodatage UNIX :

INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))

4 . Manipulation manuelle des chaînes

Extraire les parties de date et les concaténer dans un format valide :

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

Attention :

  • Utilisez des instructions préparées pour empêcher l'injection SQL.
  • Envisagez d'utiliser le type DATE au lieu de DATETIME ou TIMESTAMP pour les valeurs de date uniquement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn