无法在mySQLi准备好的语句中获取ID

时间:2019-06-20 18:58:18

标签: php mysqli prepared-statement

我有一个非常奇怪的问题,我不明白为什么。在一种情况下,代码有效,而在另一种情况下,代码无效。

代码不起作用:

$sql = "SELECT id FROM users WHERE otp = ? AND phone = ?";      
$stmt = mysqli_prepare($connect, $sql);
mysqli_stmt_bind_param($stmt, "ss", $otp, $phone);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);

if (mysqli_stmt_num_rows($stmt) == 1) {

    mysqli_stmt_bind_result($stmt, $id);
    while (mysqli_stmt_fetch($stmt)) {
        echo $id;
    }
}

在此示例中,我得到的$ id始终为3(我不知道为什么)。实际上,id是7,但是当我显示 name 而不是 id 时,它可以工作并且我得到正确的名字。

代码有效:

$sql = "SELECT name FROM users WHERE otp = ? AND phone = ?";        
$stmt = mysqli_prepare($connect, $sql);
mysqli_stmt_bind_param($stmt, "ss", $otp, $phone);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);

if (mysqli_stmt_num_rows($stmt) == 1) {

    mysqli_stmt_bind_result($stmt, $name);
    while (mysqli_stmt_fetch($stmt)) {
        echo $name;
    }
}

我很困惑,请帮助我解决这个问题。

0 个答案:

没有答案