Maison >base de données >tutoriel mysql >Comment résoudre les incompatibilités de format de date PHP et MySQL lors de l'utilisation de jQuery Datepicker ?

Comment résoudre les incompatibilités de format de date PHP et MySQL lors de l'utilisation de jQuery Datepicker ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-11 13:37:161017parcourir

How to Resolve PHP and MySQL Date Format Incompatibilities When Using jQuery Datepicker?

Problèmes de format de date PHP MySQL

Lors de l'utilisation du sélecteur de date jQuery avec un format spécifié (par exemple, "25/08/2012"), l'insertion de la date sélectionnée dans une base de données MySQL en tant que valeur de date peut entraîner des erreurs et afficher la valeur par défaut "0000-00-00 00:00:00" à la place.

Raison :

Selon la documentation de MySQL, MySQL reconnaît les valeurs de date dans des formats spécifiques, notamment « AAAA-MM-JJ » ou 'AA-MM-JJ'. Le format utilisé par le sélecteur de date jQuery ('08/25/2012') n'est pas directement reconnu par MySQL.

Solutions :

Il existe plusieurs façons de résoudre ce problème. problème :

1. Utilisez AltField pour convertir le format :

Configurez le sélecteur de date pour fournir les dates dans un format pris en charge à l'aide des options "altField" et "altFormat". Cela crée un champ masqué qui contient la date au format souhaité.

2. Utilisez la fonction STR_TO_DATE() de MySQL :

Cette fonction peut convertir la chaîne reçue en une valeur de date MySQL valide. Utilisez-le comme suit :

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

3. Convertir la date en objet PHP DateTime :

Utilisez l'objet DateTime de PHP pour convertir la chaîne reçue dans un format de date que PHP comprend.

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

4. Manipuler la chaîne manuellement :

Si aucune des options ci-dessus ne fonctionne, vous pouvez manipuler manuellement la chaîne reçue en un littéral de date MySQL valide.

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

Attention :

  • Le code fourni dans la question est vulnérable à l'injection SQL. Pensez à utiliser des instructions préparées avec des paramètres pour éviter cette vulnérabilité.
  • L'extension mysql_* est obsolète depuis PHP 5.5.0. Utilisez plutôt mysqli ou PDO_MySQL.
  • Envisagez d'utiliser le type de données DATE au lieu de DATETIME ou TIMESTAMP pour stocker les dates.

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