【发布时间】:2012-09-24 19:22:29
【问题描述】:
我正在努力找出为什么我的查询返回零行。我已经在this question 广泛尝试解决这个问题,但没有得到体面的结果。
它的要点是:
$mydate=date("Y-m-d",strtotime("-3 months"));
$foo_query=$DBH->prepare("SELECT * FROM BarTable WHERE postdate = :postdate AND postdate > '$mydate' ORDER BY postdate DESC");
$foo_query->execute( array('postdate' => $_REQUEST['postdate']) );
编辑:这个查询应该说获取日期,将其设置为过去三个月,然后将其命名为 $mydate。然后从 BarTable 中取出 postdate 大于 $mydate 的所有字段,然后执行查询。
刚刚有人向我指出,我所说的是我正在选择 postdate 等于 3 个月前并且也大于 $mydate 的行。
我不明白我在说什么。 :postdate 不等于 3 个月前,所以 postdate = :postdate 不能选择 postdate 等于 3 个月前的行。
为了正确显示我的行,我之前输入了WHERE postdate > '$mydate'。
如何键入postdate = :postdate AND postdate > '$mydate' 以便我使用参数并确保根据大于$mydate 选择数据?
【问题讨论】:
-
您的
postdate不能等于某个日期并且大于某个日期。你的意思是使用OR? -
您到底想查询什么?三个月后的行,或
$_REQUEST['postdate']中指定日期的行,或两者兼而有之? -
你想要达到什么目的?您想要晚于 3 个月前的帖子吗?还是您想要发布于 :postdate 的帖子??
-
又是这样:
postdate = :postdate AND postdate > '$mydate'一个日期怎么可能等于一个日期并且大于一个日期? -
@JvdBerg - 他比较的两个日期是分开定义的。
$mydate来自 strtotime,而 postdate 来自$_REQUEST。