首页 > 解决方案 > MySQL 查询仅返回 COUNT

问题描述

在我的网站上,我正在执行 SQL 查询来填写信息。这样做的代码部分是这样的:

$user = mysqli_real_escape_string(db_connect(),$_SESSION['UserName']);
$sqlStr = "SELECT * FROM tbl WHERE username='{$user}'";
$out = mysqli_query(db_connect(), $sqlStr);

$settings = False;
if(!(0 == mysqli_num_rows($out))){
    $settings = True;
    $res = mysqli_fetch_assoc($out);
}

对于给定的用户,它应该只返回一行。但是,输出非常时髦。对于在数据库中有条目的给定用户,输出如下:

mysqli_result Object ( [current_field] => 0 [field_count] => x [lengths] => Array ( [x] => x ) [num_rows] => 1 [type] => 0 )

这是正确的,但是当执行 mysqli_fetch_assoc 时,结果是这样的:

Array ( [COUNT] => 2 ) 

我完全无法理解它是如何返回 COUNT 的,更不用说 2 行了。数据库中甚至没有 2 行。任何用户名都会发生这种情况。

标签: phpmysqlmysqli

解决方案


已找到解决方法。输出会预先使用 while() 循环进行迭代。以下是工作代码:

$settings = False;
If(!(0 == mysqli_num_rows($out))){
    $settings = True;
    while($res = mysqli_fetch_assoc($out)){
        $var = $res['var'];

        break;
    }
}

然后在整个站点中使用 $var 而不是 $res['var']。这正确地填充了信息。这解决了这个问题,虽然我仍然不明白是什么导致了这个问题。


推荐阅读