首页 > 解决方案 > Mysql 查询 vs php 查询给了我错误的结果

问题描述

我有一个包含超过 110,000 条记录的访问日志数据库。

我在控制台上运行下一个查询:

SELECT COUNT(`remote_host`), `remote_host` FROM `access_log`
GROUP BY `remote_host` HAVING COUNT(`remote_host`) > 99
ORDER BY COUNT(`remote_host`) DESC 

我有这个结果。 mysql查询结果

有 143 条记录。

但是当我使用相同的查询执行 PHP 代码时,结果会有所不同,有 174 条记录 (??)。 用 PHP 查询

第一条记录具有下一个值:89.248.174.171, 14160

2365 对 14160 !!??

第二个结果就OK了。但是……接下来的结果也不一样!!

PHP代码很简单:

$q_1 = "SELECT COUNT(`remote_host`), `remote_host` FROM `access_log` GROUP BY `remote_host` HAVING COUNT(`remote_host`) > 99 ORDER BY COUNT(`remote_host`) DESC ;";

$aItems = doQuery($con, $q_1);
echo count($aItems)."<br/>";
var_dump($aItems);

函数查询:

function doQuery($con, $query) {
    $result = mysqli_query($con, $query);

    $arr = array();
    if ($result) {
        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
            $arr[] = $row;
        mysqli_free_result($result);
    }
    return $arr;
}

标签: phpmysql

解决方案


只需在 PHP 中使用 AS 定义一个 COUNT

SELECT COUNT(`remote_host`) AS RHOST, `remote_host` FROM `access_log`
GROUP BY `remote_host` HAVING COUNT(`remote_host`) > 99
ORDER BY COUNT(`remote_host`) DESC

推荐阅读