7

PDOをMySQLの「between」で動作させようとしています。以下は私のコードです:

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

返されるのは、値が「0」または「NULL」の配列です。終了日をハードコーディングすると、start_date-1に設定されているかのように動作し、の前のすべての行を再調整しますend_date。だから、私はここで何が間違っているのですか?

4

2 に答える 2

12

値を一重引用符で囲まないでください。

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date");
于 2012-09-20T14:05:31.470 に答える
6

パラメータを引用符で囲まないでください。

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date");
于 2012-09-20T14:05:32.650 に答える