【问题标题】:MySQL COUNT Giving DIfferent ResultsMySQL COUNT 给出不同的结果
【发布时间】:2019-04-11 02:51:40
【问题描述】:

如果我在 PHP 中使用它来计算记录,当实际上没有记录时,它的计数为 1。但是,当我在 HeidiSQL、phpmyadmin 或其他任何工具中运行相同的查询时,它会给出正确的 0。为什么会出现差异?

if ($result = $mysqli->query($Query)) :
    return $result->num_rows;
    $MySQLError = ($mysqli->connect_errno) ? mysqli_error($mysqli) : "";
    $result->close();
    $mysqli->close();
    if ($MySQLError) return $MySQLError;
endif;

$Query,在这种情况下,包含:

SELECT COUNT(ID) AS UpdateCount 
FROM tablename 
WHERE ShowPage = 1 AND 
DateUpdated BETWEEN 1554345942 AND 1554950742

【问题讨论】:

    标签: php mysql sql mysqli


    【解决方案1】:

    在做其他事情的时候,这个问题的答案突然打动了我,现在我明白了。我在查询中使用 COUNT(ID),但也在编程中使用 $result->num_rows。只需删除 COUNT(ID) 就可以了。

    SELECT ID 
    FROM tablename 
    WHERE ShowPage = 1 AND 
    DateUpdated BETWEEN 1554345942 AND 1554950742
    

    【讨论】:

    • 很好地找到它。接受并投票赞成您的答案,以便未来有相同或类似问题的访问者受益!
    • @Don't Panic 谢谢你,我对此感到有点愚蠢,但我确信我错过了一些显而易见的事情。令我惊讶的是,这里的锐利眼睛没有立即发现它!无论如何,我无法对自己的答案投赞成票,而且我看到有人出于某种未知原因投了反对票,但如果我再等九个小时,我可以将其标记为已接受。
    【解决方案2】:

    如果尚未提交另一个数据库会话,则可能会出现此问题。确保没有其他尚未提交的数据库会话可以解决此问题。

    【讨论】:

    • 可能,但即使没有运行其他查询,它似乎也始终不正确。在 HeidiSQL 和 phpmyadmin 中总是正确的,但在 PHP 中从来没有,所以我怀疑它比我错过的更基本。奇怪,我用同样的代码很久了,才注意到这个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多