I’m trying to get PDO to work with a MySQL ‘between’. Below is my code:
$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);
What gets returned is an array with ‘0’ or ‘NULL’ for values. When I hard code the end date, it acts as if start_date
is set to -1, retuning me all rows before the end_date
. So, what am I doing wrong here?
Advertisement
Answer
Don’t wrap the values with single quote.
$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date");