php - 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 行。任何用户名都会发生这种情况。
解决方案
已找到解决方法。输出会预先使用 while() 循环进行迭代。以下是工作代码:
$settings = False;
If(!(0 == mysqli_num_rows($out))){
$settings = True;
while($res = mysqli_fetch_assoc($out)){
$var = $res['var'];
break;
}
}
然后在整个站点中使用 $var 而不是 $res['var']。这正确地填充了信息。这解决了这个问题,虽然我仍然不明白是什么导致了这个问题。
推荐阅读
- angular - page-router-outlet 使用 Nativescript 导航
- mysql - SQL 命令在为消息创建数据库时仅获取最近的输入
- php - 在 Codeigniter 上连接特定代码
- sql-server - 带有 SQL Server 数据的 Microsoft 查询格式函数
- wireless - 使用 WIFI 执行 Altera 项目
- django - 部署到heroku之后
- typescript - 为什么条件类型在泛型函数中不起作用?
- pyspark - 自定义 spark csv 行终止符
- jquery - 如果超过窗口高度,则移动下拉容器
- java - Retrofit 的响应无法获取对象值