2011-11-19 57 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