如何在动态查询中模拟WHERE 1? [英] How can I emulate WHERE 1 in a dynamic query?

查看:150
本文介绍了如何在动态查询中模拟WHERE 1?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在像这样动态查询:

I'm making a query dynamically like this:

$query = "SELECT u.*
          FROM users u
          WHERE date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 $range))";

$range包含这样的单词:

switch ($_GET['range']){
   case "week":
      $range = "WEEK";
   case "month":
      $range = "MONTH";
   case "year":
      $range = "YEAR";
   case "ALL":
      $range = <I don't know what should I put here to get the expected result>;
}

如上所述,我想将某些内容设置为$range值,以使WHERE子句类似WHERE 1.我该怎么办?

As I've said above, I want to set something as $range value to make the WHERE clause something like WHERE 1. How can I do that?

推荐答案

我认为亚当的建议是这样的:

I think what Adam was suggesting is something like this:

$where = '';

switch ($_GET['range']) {

    case "week":
       $where = "date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 WEEK))":
        break;

    case "month":
       $where = "date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 MONTH))":
        break;

    case "year":
       $where = "date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 YEAR))":
        break;

    default:
        $where = '';
}

$query = "SELECT u.* FROM users u WHERE $where";

假设使用其他条件进行报告?字符串连接变得混乱的地方.在零件之间添加与".完全禁止使用WHERE关键字吗?在哪里可以用OOP代码表示SQL查询.

Assume reporting with other criteria? Where the string concatenation gets messy. Adding 'AND' between parts. Suppressing WHERE keyword entirely? Where OOP code to represent the SQL query can be useful.

这篇关于如何在动态查询中模拟WHERE 1?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆