[英]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.