MySQLi stmt num_rows 返回 0

问题描述 投票:0回答:1

我在 PHP 中使用

$stmt->num_rows
时遇到问题,我不确定我做错了什么。
$stmt->num_rows
在应该返回 1 时返回 0。查询 does 工作并在 phpMyAdmin 中执行时返回 1 结果。任何帮助将不胜感激。

public function get_login($username, $password)
{
    $query = "SELECT `id` FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1;";
    if($stmt = $this->prepare($query))
    {
        $stmt->bind_param('ss', $username, $password);
        if($stmt->execute())
        {
            $stmt->bind_result($id);
            $stmt->fetch();
            $stmt->store_result();
            if($stmt->num_rows > 0)
            {
                return $id;
            }
            return false;
        }
        return false;
    }
    return false;
}
php mysql mysqli
1个回答
14
投票

试试这个,先调用

get_result
,然后获取结果。

public function get_login($username, $password)
{
    $query = "SELECT `id` FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1;";
    $stmt = $this->prepare($query);
    $stmt->bind_param('ss', $username, $password);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();          
    return $row['id'] ?? false;
}
© www.soinside.com 2019 - 2024. All rights reserved.