mysqli(a,b,c,d)->query(sql)->fetch_assoc() 究竟是如何工作的?

How exactly does mysqli(a,b,c,d)->query(sql)->fetch_assoc() work?

我是 php 和 mysqli 的新手,一直在研究并试图了解其中许多内置函数的工作原理。我已经阅读了文档和许多 tutorials/examples。

我有类似的东西:

$conn = new mysqli(vars); <br />
$sql = "Select * from Users where name ='$name'";

$result = $conn->query($sql);
$pass = result->fetch_assoc()['Pass'];
//check password stuff

效果很好,但是如果我随后尝试使用 $result->fetch_assoc()['ID'] 它 returns 无效。如果我交换 ID 和 Pass 的顺序,那么 id returns 和 pass 返回 null.

我不明白为什么会这样。我的想法(这显然是错误的)是 result 应该存储整行(它确实如此)然后当我获取 assoc 时我应该只是从该行中提取数据。但是,当我获取 assoc 时,它似乎正在覆盖结果。这是怎么回事?

我的解决方法是为我需要启动会话和存储变量的每个数据点多次调用查询,我知道我可以使用准备好的语句,但我觉得有更好的方法,我是错过了。

有人可以解释一下吗?

每次调用 fetch_assoc() 时,它都会获取下一行。大概只有一个用户具有特定名称,因此第二次 fetch_assoc() 调用的结果将是 null.

存储 $result->fetch_assoc() 的值,之后你可以用它做任何你想做的事情。

$user = $result->fetch_assoc();

echo $user['ID'];
echo $user['Pass'];