如何编写此 mysql 查询


How write this mysql query?

我对此非常满意,非常感谢任何帮助。我有一个包含一些选择选项的表单,我正在尝试让它在我的数据库中查询一些日期行,以查找明天、下周和下个月满足的条目。我已经让 mysql 命令在 php 管理器中正常工作,但我无法弄清楚如何让它们在我的 php 表单中工作。我应该补充一点,选择的变量被放入数组中,我只是无法弄清楚在哪里以及如何编写 MYSQL 查询。

我想使用的 mysql 命令是:

**NEXT WEEK**
SELECT start FROM  `tablename` 
WHERE START = DATE_ADD( CURDATE( ) , INTERVAL( 9 - IF( DAYOFWEEK( CURDATE( ) ) =1, 8, DAYOFWEEK( CURDATE( ) ) ) ) DAY ) 
**NEXT MONTH**
SELECT start FROM `tablename` WHERE start BETWEEN DATE_SUB(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)),INTERVAL DAY(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)))-1 DAY) AND LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH))

这是表格:

<select id="start" name="start" class="form-control">
<option value="" disabled selected>When</option>
<option value="<?php echo date("Y-m-d");?>">Today</option>
<option value="<?php ------what goes here?---------?>">Tomorrow</option>
<option value="<?php-----what goes here?-----------?>">Next Month</option>
</select>

这是问题代码:

$whereClauses = array(); 
if (! empty($_GET['start'])) $whereClauses[] ="(start='".mysqli_real_escape_string($connection,$_GET['start'])."'";

我建议您不要将日期或长字符串作为您选择的值。调试会变得令人沮丧。请改用简单的键,例如:

<select id="start" name="start" class="form-control">
<option value="" disabled selected>When</option>
<option value="today">Today</option>
<option value="tomorrow">Tomorrow</option>
<option value="next_month">Next Month</option>
</select>

现在,您可以在PHP中简单地执行以下操作:

$whereClauses = array(); 
if (!empty($_GET['start']))
    if ($_GET['start'] == "today") {
        $whereClause[] = "START = CURDATE()";
    }
    else if ($_GET['start'] == "tomorrow") {
        $whereClause[] = "START = DATE_ADD( CURDATE( ) , INTERVAL( 9 - IF( DAYOFWEEK( CURDATE( ) ) =1, 8, DAYOFWEEK( CURDATE( ) ) ) ) DAY )";   
    }
    else if ($_GET['start'] == "next_month") {
        $whereClause[] = "start BETWEEN DATE_SUB(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)),INTERVAL DAY(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)))-1 DAY) AND LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH))";
    }