有人可以帮我解决下面的问题吗?我需要选择订阅“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/