Insertion de formats de date dans MySQL à l'aide de PHP
Lorsque vous travaillez avec la base de données MySQL, il est essentiel de formater correctement les valeurs de date lors de l'insertion. Un problème courant consiste à insérer des dates dans un format incorrect, ce qui entraîne des erreurs de base de données.
Problème :
Vous utilisez le sélecteur de date jQuery, qui renvoie les dates en 'MM /JJ/AAAA'. Cependant, MySQL attend les dates dans des formats spécifiques, tels que « AAAA-MM-JJ », « AA-MM-JJ » ou « AAAAMMJJ ». L'insertion de dates dans un format incorrect entraînera l'insertion de « 0000-00-00 00 00 00 ».
Solution :
Il existe plusieurs façons de résoudre ce problème. :
-
Utilisez les champs altField et altFormat du Datepicker options : Configurez le sélecteur de date pour fournir des dates dans un format pris en charge en définissant les options altField et altFormat. Par exemple :
<input type="hidden">
Copier après la connexion
- Convertissez la chaîne à l'aide de la fonction STR_TO_DATE() de MySQL : Convertissez la chaîne de date reçue de jQuery dans un format MySQL valide à l'aide de STR_TO_DATE( ) fonction :
INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
Copier après la connexion
- Utiliser PHP Classe DateTime : Convertissez la chaîne en un objet PHP DateTime, puis obtenez 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'); // Formatted string
$timestamp = $dt->getTimestamp(); // UNIX timestamp
Copier après la connexion
-
Manipulez manuellement la chaîne : Divisez manuellement la chaîne de date en ses composants et assemblez-la correctement format :
$parts = explode('/', $_POST['date']);
$date = "$parts[2]-$parts[0]-$parts[1]";
Copier après la connexion
Attention :
-
Évitez l'injection SQL : Assurez-vous d'utiliser des instructions préparées pour empêcher SQL vulnérabilités d'injection.
-
Utilisez le type DATE au lieu de DATETIME ou TIMESTAMP :Le type DATE est recommandé pour stocker des valeurs de date pures sans composantes temporelles.
Remarques supplémentaires :
- Les fonctions mysql_* sont obsolètes dans PHP 5.5.0 et doivent être remplacés par mysqli ou PDO_MySQL extensions.
- La fonction STR_TO_DATE() nécessite que la variable système date_format soit définie au format approprié pour analyser la chaîne de date.
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!