PDO/PHP条件
问题描述:
我有以下代码: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号线
请有人可以用这个
感谢
诗篇帮助正确的语法手册。数据库连接绝对有效!
答
我不知道为什么在某些情况下你只会遇到这个问题,但看起来你的比较操作符已经切换了字符。
date => NOW()
应该
date >= NOW()
乍一看,我以为这是因为DATE
是,你正在使用的列名不反引号保留字。但是,according to the docs:
MySQL的允许,因为 很多人以前用过他们一些关键字被用作不带引号的标识符。例子是在下面的列表 :
ACTION
BIT
DATE
...
嗨,我刚刚发现了同样的问题,因为你已经上市有得到的东西的工作。对不起,这个愚蠢的问题,我猜这只是早上6点,而且一直在工作!谢谢 – Dino