web-dev-qa-db-fra.com

Vous utilisez Mysqli bind_param avec des colonnes de date et d'heure?

Comment insérer des données dans une colonne de date ou d'heure MySQL en utilisant PHP mysqli et bind_param?

50
Keith Lyall

Comme toute autre chaîne

$ stmt = $ mysqli-> prepare ('insérer dans les valeurs foo (dt) (?)'); 
 $ dt = '2009-04-30 10:09:00'; 
 $ stmt-> bind_param ('s', $ dt); 
 $ stmt-> execute ();
80
VolkerK

Horodatages en PHP sont des entiers (le nombre de secondes de l'époque UNIX). Une alternative à la précédente est d'utiliser un paramètre date/heure de type entier et les fonctions MySQL FROM_UNIXTIME et UNIX_TIMESTAMP

$stmt = $mysqli->prepare("INSERT INTO FOO (dateColumn) VALUES (FROM_UNIXTIME(?))");
$stmt->bind_param("i", $your_date_parameter);
$stmt->execute();
12
Rob

Pour la date/heure actuelle, vous pouvez utiliser la routine standard MySQL. Vous n'avez pas à préparer cela.

$query  = "INSERT INTO tablename ";
$query .= "VALUES(?,?,?,NOW()) ";
$preparedquery = $dbaselink->prepare($query);
$preparedquery->bind_param("iii",$val1,$val2,$val3);
2
Vincent

J'ai utilisé la fonction date () et cela m'a résolu le problème.

$stmt = $mysqli->prepare("INSERT INTO FOO (dateColumn) VALUES ?");
// 6/10/2015 10:30:00
$datetime = date("Y-m-d H:i:s", mktime(10, 30, 0, 6, 10, 2015));
$stmt->bind_param("s", $datetime);
$stmt->execute();
1
jcromeros1987

Utilisez la fonction mySQL now () pour les champs d'horodatage.

0
Peter

réglez d'abord la date et l'heure à l'aide de la fonction date ()

$date=date("d/m/y");
$time=date("h:i:sa");

puis passez-le dans l'instruction préparée, comme n'importe quelle autre chaîne variable-

$stmt = $mysqli->prepare("INSERT INTO FOO (dateColumn, timeColumn) VALUES (?,?)");
$stmt->bind_param("ss", $date , $time);
$stmt->execute();
0
Wijay Sharma