我无法使mysqli_stmt_num_rows在php中工作

时间:2019-04-25 13:17:02

标签: php

我一直在尝试使mysqli_stmt_num_rows函数正常工作,但我似乎无法在mysqli_error上出现任何错误,在我看来一切都很好。

    $query = ("SELECT * FROM users WHERE user_email= ? ;");

    $stmt = mysqli_stmt_init($connection);

    if  (!mysqli_stmt_prepare($stmt , $query)) {
        echo "Error at mysqli_stmt_prepare ". 
                mysqli_stmt_error($connection);
    } else {
        mysqli_stmt_bind_param($stmt, 's', $userEmail );

        mysqli_stmt_execute($stmt);
        mysqli_stmt_store_result($stmt);
        $result = mysqli_stmt_num_rows($stmt);

        if  (!$result) {
            echo 'Error at $result'. mysqli_stmt_error($stmt);
        } else {
            echo '$result is working :)';
        }
    }

我可以使用mysqli_stmt_get_result,但不能使用mysqli_stmt_num_rows。帮助:(

1 个答案:

答案 0 :(得分:3)

mysqli_stmt_num_rows()返回一个介于0n之间的数字,它不返回布尔值。

您正在测试$result,就好像它是布尔值一样!

现在,如果您的查询返回NO ROWS,则如果这是新用户mysqli_stmt_num_rows(),它将返回零,并且

if  (!$result) { 

将零归零,因此运行

    echo 'Error at $result'. mysqli_stmt_error($stmt);

尽管这不是错误mysqli_stmt_error($stmt),但不会返回错误消息。

您应该做

$result = mysqli_stmt_num_rows($stmt);

if  ($result > 0 ) {
    echo 'Found that user';
} else {
    echo 'Nobody yet registered with that email';
}