gpt4 book ai didi

php - 为什么 fetch_assoc 返回 false?

转载 作者:行者123 更新时间:2023-12-02 03:40:33 25 4
gpt4 key购买 nike

$stmt = $mysqli->prepare("SELECT username, email, password, code FROM temp_users WHERE code = ?");
$stmt->bind_param('s', $code);
$stmt->execute();
$stmt->store_result();
//if SELECT statement returns 1, grab data.
if ($stmt->num_rows === 1) {
echo "Got Row";

$result = $stmt->get_result();
var_dump($result);

while ($row = $result->fetch_assoc()) {

$username = $row['username'];
$email = $row['email'];
$password = $row['password'];
}

这真的很奇怪,查询必须通过,因为脚本正在回显“Got Row”,到目前为止我没有任何错误。但是当我尝试使用 $result->fetch_assoc() 时出现错误,并且 $result 输出的是 false,这是为什么呢?请原谅这个问题看起来多么愚蠢,我还在学习如何使用 mysqli。 :)

最佳答案

你的问题既不愚蠢也不奇怪。您只是对 store_result()get_result() 感到困惑。

这两个函数都从数据库中获取整个记录集。获取数据后,您将无法再次获取它。因此,您不能同时使用这两个功能!

我们可以通过两种方式修复您的代码。

使用store_result():

$stmt = $mysqli->prepare("SELECT username, email, password, code FROM temp_users WHERE code = ?");
$stmt->bind_param('s', $code);
$stmt->execute();
$stmt->store_result();
//if SELECT statement returns 1, grab data.
if ($stmt->num_rows === 1) {
echo "Got Row";

$stmt->bind_result($username, $email, $password);
while ($stmt->fetch()) {
// use the data here
var_dump($username);
}
}

使用get_result():

$stmt = $mysqli->prepare("SELECT username, email, password, code FROM temp_users WHERE code = ?");
$stmt->bind_param('s', $code);
$stmt->execute();
$result = $stmt->get_result();
//if SELECT statement returns 1, grab data.
if ($result->num_rows === 1) { // <--- !!! We are using the result object here
echo "Got Row";

foreach ($result as $row) {
$username = $row['username'];
$email = $row['email'];
$password = $row['password'];
}
}

关于php - 为什么 fetch_assoc 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com