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

标签 php mysql pdo

有人可以帮我解决下面的问题吗?我需要选择订阅“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。您可能应该在此处绑定(bind)一个包含值 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ć 的答案来寻找替代解决方案。

关于php - 如何使用 PHP 的 PDO 和 MySQL 选择具有与值匹配的列且位于日期范围之间的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610469/

相关文章:

PHP MySQL以表单更新不更新

php - Laravel:对 View 的查询进行分页 MySQL 错误 1140 Mixing of GROUP columns

javascript - 如何将javascript返回的值从 View 传递到laravel中的 Controller

MySQL存储过程中 "Lock Table"的替代方案

PHP - 将 PDO 与 IN 子句数组一起使用

php - 如何使用php pdo安全地将数据插入mysql

php - 与 2 个不同的表通信 (MySQL)

php - SQL查询空字段,选择ALL选项如*

MySQL 日期从月份和日期格式中减去

php - 网站打印出代码