2012-09-20 34 views
6

Estoy tratando de hacer que PDO funcione con MySQL 'entre'. Debajo está mi código:PDO y MySQL 'entre'

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

Lo que se devuelve es una matriz con '0' o 'NULL' para los valores. Cuando codifico la fecha de finalización, actúa como si start_date estuviera establecido en -1, volviéndome a sintonizar todas las filas antes del end_date. Entonces, ¿qué estoy haciendo mal aquí?

Respuesta

11

No ajuste los valores con comillas simples.

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

1 segundo más rápido :))) –

+0

jeje di cuenta de que :) –

+0

Ambos eran correctas, pero yo marcaré este, ya que la respuesta de tu velocidad, jaja ¡Gracias! – Samsquanch

5

No ponga comillas alrededor params:

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