我像这样动态地进行查询:
$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。我怎么才能做到这一点呢?
发布于 2017-08-03 04:45:37
我将定义一个具有有效范围的数组,并首先验证用户输入。然后动态构建查询。
$validRanges = [
'year' => 'YEAR',
'month' => 'MONTH',
'week' => 'WEEK',
'ALL' => null
];
if (isset($_GET['range']) && !isset($validRanges[$_GET['range']])) {
$range = $validRanges[$_GET['range']]);
} else {
// it's up to you, what to do in this case
throw new Exception('Range is not valid or missing');
}
if ($range === null) {
$rangeCondition = '1=1';
} else {
$rangeCondition = "date_time > unix_timestamp(NOW() - INTERVAL 1 $range)";
}
$query = "SELECT u.*
FROM users u
WHERE $rangeCondition";https://stackoverflow.com/questions/45468750
复制相似问题