首页 > 解决方案 > 如何从数据库中获取价值

问题描述

我正在创建一个社交网络。用户可以拥有经过验证的帐户。如果该列的verified_user值为 1,则表示用户已通过验证并且我想回显verified。如果值为 0 我想回显not verified。我有一个假设获取所有这些数据的方法和一个假设回显该方法给出的对象。但即使值显示为 1,它也会继续回响Not verified。有人可以告诉我出了什么问题吗?

public function verifiedUser($user_to) {

    $query = $this->con->prepare("SELECT verified_user FROM users WHERE username = ?");
    $query->bind_param("s", $this->user['username']);
    $query->execute();
    $query->bind_result($verified_user);
    $query_result = $query->get_result();

    if ($verified_user == 1) {

        return true;

    } else {

        return false;
    }

}

if($logged_in_user_obj->verifiedUser($username)) {

    echo "Verified";
} else{

        echo "Not Verified";
    }

我也尝试过num_rows,但这给了我现在得到的相同结果。

标签: phpmysqloopmysqli

解决方案


您需要使用存储的结果$query_result或通过绑定到变量并获取它来获取实际值。

如果要使用get_result(),请执行以下操作:

public function verifiedUser(string $user_to): bool {
    $query = $this->con->prepare("SELECT verified_user FROM users WHERE username = ?");
    $query->bind_param("s", $user_to);
    $query->execute();
    $query_result = $query->get_result();
    $row = $query_result->fetch_assoc();

    if ($row && $row['verified_user'] == 1) {
        return true;
    }
    return false;
}

如果要使用bind_result,请执行以下操作:

public function verifiedUser(string $user_to): bool {
    $query = $this->con->prepare("SELECT verified_user FROM users WHERE username = ?");
    $query->bind_param("s", $user_to);
    $query->execute();
    $query->bind_result($verified_user);
    $query->fetch();

    return $verified_user == 1;
}

推荐阅读