PHP mysql函数总是在更新查询时返回false

时间:2017-06-07 07:08:17

标签: php mysql sql

我有以下函数返回状态,查询可以更新表但仍然获得状态ACCT_NOT_FOUND,我已经尝试$sql->num_rows$sql->affected_rows但是不起作用

public function user_exit($uid, $mysqli)
{
    if(empty($uid)){
        return false;
    }
    $q  = "UPDATE `users` SET last_logged_out=now() ";
    $q .= "WHERE uid='".$uid."' ";

    $sql = $mysqli->query($q);

    if($sql->num_rows !== 0){
        return true;
    }
    return false;
}



$exit = $api->user_exit($uid, $mysqli);

if($exit !== FALSE){

    $data = array('status'=>'SUCCESS_LOGOUT');

}else{

    $data = array('status'=>'ACCT_NOT_FOUND');
}

2 个答案:

答案 0 :(得分:5)

你应该使用$ mysqli-> affected_rows,因为你没有更新num_rows

 if($mysqli->affected_rows !== 0){
        return true;
    }

更改下面的功能

public function user_exit($uid, $mysqli)
{
    if(empty($uid)){
        return false;
    }
    $q  = "UPDATE `users` SET last_logged_out=now() ";
    $q .= "WHERE uid='".$uid."' ";

    $sql = $mysqli->query($q);

    if($mysqli->affected_rows !== 0){
        return true;
    }
    return false;
}

答案 1 :(得分:0)

您可以将 num_rows 方法与select query一起使用。

如果您想要受影响的行,请尝试 affected_rows

阅读有关受影响行http://php.net/manual/en/mysqli.affected-rows.php

的特定文档
if($mysqli->affected_rows != 0){
        return true;
    }