在我的网站上,我正在执行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行。任何用户名都会发生这种情况。
答案 0 :(得分:0)
已找到解决方法。事先使用while()循环迭代输出。以下是工作代码:
$settings = False;
If(!(0 == mysqli_num_rows($out))){
$settings = True;
while($res = mysqli_fetch_assoc($out)){
$var = $res['var'];
break;
}
}
,然后在整个站点中使用$ var而不是$ res ['var']。这样可以正确填充信息。这可以解决问题,尽管我最初仍然不了解是什么导致了问题。