不满足PDO / PHP关于返回行数的条件


PDO / PHP conditions on number of rows being returned not being met

我有以下代码:

<?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个匹配,我得到:1行输出如果超过1行,我仍然得到:1行输出如果没有匹配,我得到:

PDOStatement: execute () [PDOStatement。execute]: SQLSTATE[42000]:语法错误或访问冲突:1064你的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第1行

处使用'=> NOW()'附近的正确语法。

有人能帮我一下吗

感谢

p。数据库连接绝对工作!

我不知道为什么只有在某些情况下才会遇到这个问题,但是看起来您的比较运算符已经交换了字符。

date => NOW()

应该

date >= NOW()


乍一看,我认为这是因为DATE是一个保留字,您使用它作为没有反引号的列名。但是,根据文档:

MySQL允许一些关键字作为不加引号的标识符,因为许多人以前使用过它们。下面是一些例子列表:


行动位
日期