繁体   English   中英

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()'附近使用正确的语法

请有人帮忙

谢谢

附言 数据库连接肯定有效!

我不知道为什么您只在某些条件下会遇到此问题,但是您的比较运算符似乎已切换了字符。

date => NOW()

应该

date >= NOW()


乍一看,我认为这是因为DATE是保留字,您将其用作列名而没有反引号。 但是, 根据文档

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

行动
比特
日期
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM