mysql查询以获取特定日期之间的用户详细信息

时间:2015-05-30 21:38:19

标签: php mysql

>>> from fnmatch import fnmatch
>>> [i for i in urls if fnmatch(i,'*.html')]
['http://123.45.67.89/asodibfo3ribawoifbadsoifasdf3/v.html', 
 'http://123.45.67.89/alwefaoewifiasdof224a/v.html', 
 'http://123.45.67.89/baoisdbfai235oubodsfb45/v.html'] 

此处$query="SELECT DISTINCT ind_id,indentdate,submitted_by FROM raiseindent where submitted_by='$nm' AND indentdate BETWEEN '$fromDate' AND '$toDate' OR indentdate BETWEEN '$fromDate' AND '$toDate' OR submitted_by='$nm'"; 是用户名

我没有收到任何错误,如果我只使用$nm(用户名)或两个日期之间,此查询将获取记录

如果我用来搜索特定用户名和两个日期,则会在所选日期之间获取所有用户记录

我只需要在用户名字段中输入用户名的结果来进行搜索

2 个答案:

答案 0 :(得分:1)

试试这个

$query="SELECT DISTINCT ind_id,indentdate,submitted_by 
        FROM raiseindent 
        where submitted_by='$nm' 
          AND indentdate BETWEEN '$fromDate' AND '$toDate'";

我认为它不需要比这更复杂。

或者如果$nm可能为空或者日期为空,那么在PHP中执行这些测试并相应地动态构建查询,而不是尝试让SQL为您完成所有操作

$sql = 'SELECT DISTINCT ind_id,indentdate,submitted_by 
    FROM raiseindent 
    WHERE ';


if ( !empty($nm) && $nm != 'ALL' ) {
    $sql .= "submitted_by='$nm' AND ";
}
if ( !empty($fromDate) && !empty($toDate) ) {
    $sql .= " indentdate BETWEEN '$fromDate' AND '$toDate' ";
}
$sql = rtrim($sql, 'AND ');

答案 1 :(得分:0)

虽然已经回答了;注意尝试使用>=<=来确定包含的确切开始和结束日期,而不是BETWEEN运算符

SELECT DISTINCT ind_id,indentdate,submitted_by 
        FROM raiseindent 
        where submitted_by='$nm' 
          AND (indentdate >= '$fromDate' AND indentdate <= '$toDate');