2009-04-30 14 views

risposta

63

Come qualsiasi altra stringa

$stmt = $mysqli->prepare('insert into foo (dt) values (?)'); 
$dt = '2009-04-30 10:09:00'; 
$stmt->bind_param('s', $dt); 
$stmt->execute();

9

Timestamps in PHP sono numeri interi (il numero di secondi dall'epoca di UNIX). Un'alternativa a quanto sopra è di usare un parametro di data/ora tipo intero, e il MySQL funziona FROM_UNIXTIME e UNIX_TIMESTAMP

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

@ Rob: Quando uso questo, la data impostata è 1970/01/01 –

+1

L'intervallo valido di un timestamp è in genere da Ven, 13 Dic 1901 20:45:54 GMT a Mar, 19 Gen 2038 03:14:07 GMT. (Queste sono le date che corrispondono ai valori minimo e massimo per un intero con segno a 32 bit). Tuttavia, prima di PHP 5.1.0 questo intervallo era limitato dal 01-01-1970 al 19-01-2038 su alcuni sistemi (ad esempio Windows). –

1

ho usato la funzione data() e questo mi risolto il problema.

$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(); 
0

Utilizzare la funzione mySQL ora() per i campi di data e ora.

+1

Siamo spiacenti, no, solo per la data e l'ora correnti nei campi data/ora. – Peter

1

Per la data/ora corrente è possibile utilizzare la routine standard MySQL. Non devi prepararlo.

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

primo set la data & ora con data() FUNCTION-

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

poi passarlo nella dichiarazione preparata, proprio come qualsiasi altra stringa variabile

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