2010-06-01 5 views
1

Bonjour je souhaite envoyer à une base de données MySQL une date et une heure dans un format compatible avec le format DateQime de mysql, qui est: 0000-00-00 00:00: 00 ...Insertion d'une valeur Date et Heure dans un MySql depuis PHP

Im en utilisant ce code qui porte la date et l'heure à partir d'une commande PHP:

$insert = "INSERT INTO sms (ref, texto, fecha) 
    VALUES ('".$_POST['usuario']."', '".$_POST['sms']."', '".date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000))."')"; 
    $add_member = mysql_query($insert); 

Je veux vraiment le faire, mais avec une commande MySQL, je veux dire, en utilisant la date et l'heure depuis le serveur mysql. Merci

+1

Vous devriez lire sur l'injection SQL et désinfectante entrée utilisateur. Vous semblez écrire du code vulnérable. – Hammerite

+0

Quelle date souhaitez-vous insérer? date et heure courante ou 1 juil 2000 one? –

Répondre

1

Utilisation NOW() lors de l'insertion du disque INSERT INTO table (date) VALUES (NOW())

Pour votre code:

$insert = "INSERT INTO sms (ref, texto, fecha) 
VALUES ('".$_POST['usuario']."', '".$_POST['sms']."', NOW())"; 
$add_member = mysql_query($insert); 
+0

pouvez-vous s'il vous plaît ajouter cela dans mon code? $ insert = "INSERT INTO sms (ref, texto, fecha) VALUES ('". $ _ POST [' usuario ']. "', '". $ _ POST [' sms ']. "', '". date (DATE_ATOM, mktime (0, 0, 0, 7, 1, 2000)). "')"; $ add_member = requête mysql ($ insert); – DomingoSL

+0

@DomingoSL - Ok, j'ai mis à jour mon message. Mon code affiche l'heure actuelle sur le serveur MySQL. Il ne publie pas le 1er juillet 2000. Si vous allez faire cela, vous feriez mieux de faire '2000-07-01' –

+0

pour une raison quelconque cela ne fonctionne pas – DomingoSL

1

MySQL permet seulement un nombre limité de formats de date fournis comme entrée. De MySQL manual:

Seuls les formats décrits dans les sections suivantes sont pris en charge. Il est prévu que vous fournissiez des valeurs légales. Des résultats imprévisibles peuvent se produire si vous utilisez des valeurs dans d'autres formats.

Vous fournissez ce jour dans le format Y-m-d\TH:i:sP (valeur de la constante DATE_ATOM), qui ne sont pas pris en charge par MySQL (bien qu'il peut être analysé et stocké correctement en fonction du mode SQL en cours). Vous devez utiliser date('Y-m-d H:i:s', ...) à la place.

P.S. Et, oui, vous devriez protéger votre code contre les injections SQL.

+0

En MySQL 5.1 (au moins) vous pouvez utiliser le format DATE_ATOM, selon [manuel MySQL] (http://dev.mysql.com/doc/refman/5.1/fr/date-and-time-literals.html) : 'Les parties date et heure peuvent être séparées par T plutôt que par un espace. Par exemple, '2012-12-31 11:30:45' '2012-12-31T11: 30: 45' sont équivalents. » – Lupuz

0
$date = date("Y-m-d H:i:s", mktime(0, 0, 0, 7, 1, 2000)); 

$usuario = mysql_real_escape_string($_POST['usuario']); 
$sms = mysql_real_escape_string($_POST['sms']); 
$date = mysql_real_escape_string($date); 

$sql = "INSERT INTO sms (ref, texto, fecha) VALUES ('$usuario', '$sms', '$date')"; 
mysql_query($sql) or trigger_error(mysql_error().$sql); 
0

D'abord, je veux vous dire que vous devriez suivre les conseils dans les commentaires et lire sur l'injection SQL.

Ce code insérera l'enregistrement avec l'heure actuelle dans le bon format.

$insert = "INSERT INTO sms (ref, texto, fecha) 
VALUES ('".$_POST['usuario']."', '".$_POST['sms']."', '".date('Y-m-d H:i:s')."')"; 
$add_member = mysql_query($insert); 

Si vous ne voulez pas l'heure actuelle, vous devez changer date('Y-m-d H:i:s') dans date('Y-m-d H:i:s', some_unix_timestamp)