没有满足返回的行数的PDO / PHP条件

时间:2011-11-19 05:29:54

标签: php mysql pdo

我有以下代码:

<?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";
}
?>

如果db中有1个匹配我得到:输出1行 如果超过1行我仍然得到:输出1行 如果没有匹配,我会得到:

PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法错误;查看与您的MySQL服务器版本对应的手册,以便在'=&gt;附近使用正确的语法NOW()'在第1行

请有人帮忙解决这个问题

由于

聚苯乙烯。数据库连接绝对有效!

1 个答案:

答案 0 :(得分:0)

我不知道你为什么只在某些条件下遇到这个问题,但看起来你的比较运算符已经切换了字符。

date => NOW()

应该是

date >= NOW()


乍一看,我认为这是因为DATE是一个保留字,你用作没有反引号的列名。但是,according to the docs

  

MySQL允许某些关键字用作不带引号的标识符,因为   很多人以前用过它们。例子如下   列表:

     

ACTION
  BIT
  DATE
  ...