繁体   English   中英

如何使用PHP的PDO和MySQL选择具有匹配值且在日期范围之间的列的行?

[英]How to select rows that have a column that matches a value and fall between a date range using PHP's PDO and MySQL?

有人可以帮我解决下面的查询吗? 我需要选择所有订阅“ Food Specials”新闻通讯的用户(由于存在不同的新闻通讯名称,因此必须通过表单变量进行传递),并且其值为“ 1”,并且介于注册日期之间以以下形式选择:

$sql = 'SELECT * FROM users WHERE :newsletter = 1 AND signed_up < ":start" AND signed_up < ":end"';
$result->bindValue(":newsletter", "food_specials", PDO::PARAM_STR);
$result->bindValue(":start", "2012-09-01 12:00:00", PDO::PARAM_STR);
$result->bindValue(":end", "2012-09-25 12:00:00", PDO::PARAM_STR);

第一个“ food_specials”永远不会等于1。您可能应该在此处绑定包含值1的变量。 不知道这是干什么的。 对于此答案的其余部分,我将假设food_special是您尝试使用pdo设置的列名称。 无法做到这一点。 您需要做的就是将其明确地放在sql中。 请参见下面的示例。

您还需要更改

signed_up < ":start" 

signed_up > :start

即您需要的是

$sql = "SELECT * 
          FROM users 
         WHERE food_special = 1 
           AND signed_up > :start 
           AND signed_up < :end";

如果通过signed_up > :start AND signed_up < :end表示“ signed_up >= :start AND signed_up <= :end那么您应该寻找@glavić的答案以寻求替代解决方案。

使用BETWEEN

SELECT * 
FROM users 
WHERE 
    :newsletter = 1 AND 
    signed_up BETWEEN :start AND :end

暂无
暂无

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

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