来自sqlite的奇怪回报

时间:2016-09-16 18:53:48

标签: php mysql sqlite

我有两个非常相似的查询运行到我的sqlite文件。

1:

SELECT * 
FROM gca_logged 
WHERE UserID='39' 
  AND dateStamp LIKE '%09/16/2016' 
ORDER BY uniqueID DESC

2:

SELECT * 
FROM gca_logged 
WHERE UserID='39' 
 AND dateStamp LIKE '%%'
ORDER BY uniqueID DESC

我的问题是WHERE UserID='39' AND dateStamp LIKE '%%'只返回WHERE UserID='39' AND dateStamp LIKE '%09/16/2016'返回预期的行数。

同样,我在页面上的代码根本不使用UserID,例如WHERE dateStamp LIKE '%%& WHERE dateStamp LIKE'%09/16/2016%这些也会返回预期的输出。因此,当我尝试使用UserID和dateStamp LIKE '%%'

进行搜索时,问题仍然存在

2与1相同,但没有日期戳检查。

现在,这是奇怪的部分;查询1返回预期的正确行数。基本上是当天输入的行数。

第2行返回0行。第2行应返回为用户39输入的所有行 - 但它返回0.

我很难理解这一点。

我的代码:

    @$dEx = explode("-",$_GET['date']);
    $searchDate2 = $dEx[1]."/".$dEx[2]."/".$dEx[0]; //m/d/Y -> Y-m-d

    if (0 === strpos($searchDate2, '//')) {
        $searchDate2 = substr($searchDate2, 2);
    }

    if(strcmp($_GET['date'],"showAllTime") == 0) {
        $searchDate2 = "";
    }

    $sql = "SELECT * FROM gca_logged WHERE UserID='".$_GET['adminSearch']."' AND dateStamp LIKE '%$searchDate2%' ORDER BY uniqueID DESC";

我按照评论中的建议尝试了代码$sql = "SELECT * FROM gca_logged WHERE UserID='".$_GET['adminSearch']."' AND dateStamp LIKE '%".$searchDate2."%' ORDER BY uniqueID DESC";,没有区别。

(如果_GET ['date']等于showAllTime,则日期变量设置为“”。当回显$ sql变量时,它们看起来是正确的。

此方法适用于网站上的其他位置,但不适用于此页面。

我之前删除的半相关代码:

    if((isSet($_GET['all'])) && ($_GET['all'] == 1)) {
        $sql = "SELECT * FROM gca_logged WHERE dateStamp LIKE '%$searchDate2%' ORDER BY uniqueID DESC";
    } else {
        $sql = "SELECT * FROM gca_logged WHERE UserID='".$_GET['adminSearch']."' AND dateStamp LIKE '%".$searchDate2."%' ORDER BY uniqueID DESC";
    }

这些是2个不同的查询,一个包含UserID,另一个没有。如果if变量是正确的,就像在没有UserID的情况下使用查询一样,它就像它应该的那样工作 - 返回所有结果或仅返回选定日期。

所以我的问题不是查询没有 UserID,而是查询 用户ID。

1 个答案:

答案 0 :(得分:0)

你正在比较错误的东西

您的查询

SELECT * 
FROM gca_logged 
WHERE UserID='39' 
  AND dateStamp LIKE '%09/16/2016' 
ORDER BY uniqueID DESC

SELECT * 
FROM gca_logged 
WHERE UserID='39' 
 AND dateStamp LIKE '%%'
ORDER BY uniqueID DESC

您的代码,显示一个人甚至不选择userID

SELECT * 
FROM gca_logged 
WHERE dateStamp LIKE '%09/16/2016%' 
ORDER BY uniqueID DESC

SELECT * 
FROM gca_logged 
WHERE UserID='39' 
 AND dateStamp LIKE '%09/16/2016%'
ORDER BY uniqueID DESC