0

バインド変数の恩恵を受ける可能性のある単純な SQL クエリがあるため、次のように記述しました。

$stmt = $this->db->prepare("SELECT * FROM activities WHERE user_id=':user_id' AND date(start_time)=date(':on_specific_day')");
$stmt->bindParam(':user_id',$where['user_id']); 
$stmt->bindParam(':on_specific_day',$where['on_specific_day']); 

ご覧のとおりwhere、where 条件を格納するために使用される という連想配列があります。このステートメントを実行すると、エラーは返されませんが、行数はゼロです。代わりに、バインド変数を使用するという私の夢を捨てて、これを行うと:

$stmt = $this->db->prepare("SELECT * FROM activities WHERE user_id='{$where['user_id']}' AND date(start_time)=date('{$where['on_specific_day']}')");

クエリは問題なく実行され、テスト ケースで 2 つの結果が返されます。狂気に陥るのを誰か助けてくれませんか。:^)

4

1 に答える 1

3

PDO parametersを引用符で囲む必要はありません。

$stmt = $this->db->prepare("SELECT * FROM activities WHERE user_id=:user_id AND date(start_time)=date(:on_specific_day)
于 2013-06-01T17:27:03.520 に答える