PHP mysql insérer le format de la date
Im en utilisant datepicker de jQuery
le format de la datepicker est-ce 08/25/2012
j'ai des erreurs lors de l'insertion de ma base de données il n'insérez qu'0000-00-00 00 00 00
mes codes est
<?php
$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '$name', '$date')" ) or die ( mysql_error() );
echo 'insert successful';
?>
je suis sûr que mon insert est correct....
- S'il vous plaît, n'utilisez pas
mysql_*
fonctions pour écrire du nouveau code. Il n'est plus maintenu et que la communauté a commencé la dépréciation du processus. Voir le boîte rouge? Au lieu de cela, vous devriez en apprendre davantage sur les instructions préparées soit PDO ou MySQLi. Si vous ne pouvez pas décider qui, cet article va vous aider. Si vous choisissez AOP, voici un bon tutoriel.
Vous devez vous connecter pour publier un commentaire.
Comme indiqué dans La Date et l'Heure Littéraux:
Par conséquent, la chaîne
'08/25/2012'
n'est pas valide MySQL date littérale. Vous disposez de quatre options (dans un vague ordre de préférence, sans aucune autre information de vos besoins):Configurer Datepicker pour fournir les dates dans un format pris en charge à l'aide d'un
altField
avec sesaltFormat
:Ou, si vous êtes heureux pour les utilisateurs de voir le jour dans
YYYY-MM-DD
format, il suffit de régler ladateFormat
à la place:Utilisation de MySQL
STR_TO_DATE()
fonction pour convertir la chaîne:Convertir la chaîne de caractères reçue à partir de jQuery dans quelque chose que PHP considère comme un jour, comme un
DateTime
objet:et ensuite, soit:
l'obtention d'un chaîne formatée:
obtenir le timestamp UNIX de l':
qui est ensuite transmis directement à MySQL
FROM_UNIXTIME()
fonction:Manipuler manuellement la chaîne dans un valide littérale:
Avertissement
Votre code est vulnérable à une injection SQL. Vous vraiment devrait être à l'aide de les requêtes préparées, dans lequel vous passez vos variables comme paramètres qui ne sont pas évaluées pour SQL. Si vous ne savez pas de quoi je parle, ou comment résoudre le problème, de lire l'histoire de Bobby Tables.
Également, comme indiqué dans l'introduction pour le manuel PHP chapitre sur la
mysql_*
fonctions:Vous semble être l'aide d'un
DATETIME
ouTIMESTAMP
colonne pour la tenue d'une date de valeur; je vous recommande d'envisager l'utilisation de MySQLDATE
type à la place. Comme expliqué dans LeDATE
,DATETIME
etTIMESTAMP
Types:Vous devriez envisager la création d'un timestamp à partir de cette date witk mktime()
par exemple:
date('Y-m-d',strtotime($_POST['date_field']));
est des œuvres, et c'est exactement ce que je veux.Vous devez assurez-vous que le format de la date est AAAA-MM-JJ sur votre jQuery sortie. Je peux voir jQuery retourne MM-JJ-AAAA, qui n'est pas valide MySQL format de la date et c'est pourquoi il renvoie une erreur.
Pour le convertir en le bon, vous pourriez faire ceci:
Alors vous obtiendrez format date qui sera valide MySQL format AAAA-MM-JJ, c'est à dire 2012-08-25
Je vous recommande également à l'aide de mysql_real_escape_string que vous insérez des données dans la base de données pour éviter Des injections SQL comme une solution rapide ou une meilleure utilisation AOP ou MySQLi.
Votre requête d'insertion à l'aide de
mysql_real_escape_string
devrait plutôt ressembler à ceci:La méthode la plus simple est
Un objet date du jquery sélecteur de date à l'aide de
Pour mysql, la date doit être dans le format approprié. Une option qui gère le fuseau horaire problèmes est d'utiliser moment.js
Essayer quelque Chose comme cela..
Tout d'abord stocker
$date=$_POST['your date field name'];
Vous devez indiquer la date unique de la côte (' ')
J'espère que ça aide.