2017-06-07 13 views
0

ステータスを返す機能がありますが、クエリはテーブルを更新できますが、ステータスはACCT_NOT_FOUND、取得しようとしました$sql->num_rowsまたは$sql->affected_rowsですが動作しません。PHP mysql関数は常に更新クエリでfalseを返します

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'); 
} 
+0

についての特定の文書を読むaffected_rows

を試してみてください、影響を受けた行を取得したい場合であれば、他の($出口){} {}' 。あなたは 'true'または' false'を返すので、 '!== FALSE'をチェックするよりも簡単なif()条件が良いでしょう –

+0

私は思っています!== to!= –

+0

完全に。 –

答えて

5

あなたはNUM_ROWS

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

変更するには、選択クエリでNUM_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($mysqli->affected_rows !== 0){ 
     return true; 
    } 
    return false; 
} 
+0

'affected_rows'と' num_rows'のどちらかを試してみます。私は '$ q =" SELECT * FROM users "'に変更クエリ文を試してみます。代わりに期待どおりに動作しますので、問題は更新クエリで発生するはずですが、更新クエリはphpmyadminで直接使用します。アイデア何が間違っている? – conmen

0

以下のような機能ではない、更新されているので、あなたが$ mysqli-> affected_rowsを使用する必要があります。

あなたはなぜ、むしろ `使用し、影響を受けた行http://php.net/manual/en/mysqli.affected-rows.php

if($mysqli->affected_rows != 0){ 
     return true; 
    } 
関連する問題