2011-11-19 56 views
0

我有以下代碼:PDO/PHP條件

<?php 
$stmt = $db->prepare("select * from products where `price`=:price and `id`=:id and date => NOW()"); 
$stmt->bindParam(":price", $_GET['price'], PDO::PARAM_STR); 
$stmt->bindParam(":id", $_GET['id'], PDO::PARAM_INT); 
if ($stmt->execute() == true){ 
    if($stmt->rowCount()==1){ 
     echo "1 row"; 
    }else{ 
     echo "more than 1 row"; 
    } 
}else{ 
    echo "nothing returned"; 
} 
?> 

如果有1場在DB我得到:1點的行輸出 如果超過1行i仍然得到:1行輸出 ,如果沒有匹配我得到:

PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您在您的錯誤SQL語法;檢查對應於你的MySQL服務器版本使用附近「=> NOW()」在1號線

請有人可以用這個

感謝

詩篇幫助正確的語法手冊。數據庫連接絕對有效!

回答

0

我不知道爲什麼在某些情況下你只會遇到這個問題,但看起來你的比較操作符已經切換了字符。

date => NOW()

應該

date >= NOW()


乍一看,我以爲這是因爲DATE是,你正在使用的列名不反引號保留字。但是,according to the docs

MySQL的允許,因爲 很多人以前用過他們一些關鍵字被用作不帶引號的標識符。例子是在下面的列表 :

ACTION
BIT
DATE
...

+0

嗨,我剛剛發現了同樣的問題,因爲你已經上市有得到的東西的工作。對不起,這個愚蠢的問題,我猜這只是早上6點,而且一直在工作!謝謝 – Dino