2012-09-20 15 views
6

Sto cercando di far funzionare PDO con un MySQL "tra". Di seguito è il mio codice:PDO e MySQL "tra"

$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 

$start_date = date('Y-m-d H:i:s', mktime(0, 0, 0, 11, 1, 2009)); 
$end_date = date('Y-m-d H:i:s', mktime(23, 59, 59, 11, 30, 2009)); 

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN ':start_date' AND ':end_date'"); 
$STH->bindParam(':start_date', $start_date, PDO::PARAM_STR); 
$STH->bindParam(':end_date', $end_date, PDO::PARAM_STR); 
$STH->execute(); 
var_dump($row); 

Ciò che viene restituito è un array con '0' o 'NULL' per i valori. Quando eseguo un hard code della data di fine, si comporta come se start_date sia impostato su -1, risintonizzando tutte le righe prima dello end_date. Quindi, cosa sto facendo di sbagliato qui?

risposta

11

Non avvolgere i valori con virgolette singole.

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date"); 
+0

1 secondo più veloce :))) –

+0

hehe appena notato che :) –

+0

Entrambi erano corrette, ma lo segnaliamo uno come la risposta per la tua velocità, haha. Grazie! – Samsquanch

5

Non mettere le virgolette intorno params:

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date");