2016-04-18 18 views
1

私は比較的新しいPHPです。クラスから正しい出力を得ることができません。私はSELECT *を使用して、attempの準備文でWHEREログイン状態がinに設定されている行を取り戻しています。現在、私は配列を作成していますが、複数のユーザーがログインしていると、最初の行に書かれていて、1行しか表示できません。クラス内のPrepared Statementsを使用して複数の行を選択

通常、私は2d配列でこのような作業を行います。各行はキーと値のペアの配列を含む配列ですが、これを動作させるのが難しいです。次のように

方法がある:表COLが「アウト」または「不活性化」、正しいエラーメッセージが表示さに設定されている

public function getUserByLoginStatus($loginStatus) { 
    $session=new mysqli(self::SERVERNAME,self::USERNAME,self::DBPASS); 
    mysqli_select_db($session,"users"); 
    $statement=$session->prepare("SELECT * FROM `logins` WHERE `loginstatus`= ? ;"); 
    $statement->bind_param('s', $this->loginStatus); 
    $statement->execute(); 
    $statement->store_result(); 
    $statement->bind_result($userId,$userHandle,$eMail,$password,$gender, 
          $loginStatus,$currentSess,$currentIpv4,$currentIpv6, 
          $lastActivity,$lastLoginDate,$lastLoginTime); 
    $numberOfRows=$statement->num_rows; 
    if($numberOfRows < 1) 
     { 
      $errorMessage="No users currently online"; 
      $statement->close(); 
      $session->close(); 
      return $errorMessage; 
     } 
    else 
     { 
      while($statement->fetch()) 
       { 
        $returnArr=['userid' => $userId, 'userhandle' => $userHandle, 'email' => $eMail, 
        'password' => $password, 'gender' => $gender, 'loginstatus' => $loginStatus, 
        'currentsess' => $currentSess, 'currentipv4' => $currentIpv4, 'currentipv6' => $currentIpv6, 
        'lastactivity' => $lastActivity, 'lastlogindate' => $lastLoginDate, 'lastlogintime' => $lastLoginTime]; 
       }     
      $statement->close(); 
      $session->close(); 
      return $returnArr;  
     } 
} 

場合。 1人のユーザーが 'in'に設定されていると、そのフィールドからデータを表示できます。 1人以上のユーザーがオンラインの場合、最後のユーザーのみが表示されます(上書きされます)。

は、インスタンスの作成データを出力するようにしよう:ここ

は、私は現時点でこれをプリントアウトしようとしています方法です。 Creating an instance, attempting to output data.

+0

あなたのwhileループの$のreturnArrに、次の試してみてください=常に最後の結果を持っています、$ returnArr [] = –

+0

はどうもありがとうございましてみてください!私は本当にこの答えに感謝し、それを見て別の人を持って、この解決は問題に完全に答えます。しかし、これはちょうど痛いほど明白になった。大いに尊敬します。 :) –

答えて

0

はwhileループ

while($statement->fetch()) 
{ 
    $returnArr[]=['userid' => $userId, 'userhandle' => $userHandle, 'email' => $eMail, 'password' => $password, 'gender' => $gender, 'loginstatus' => $loginStatus, 'currentsess' => $currentSess, 'currentipv4' => $currentIpv4, 'currentipv6' => $currentIpv6, 'lastactivity' => $lastActivity, 'lastlogindate' => $lastLoginDate, 'lastlogintime' => $lastLoginTime]; 
} 
+0

一生懸命に見て手を貸してくれてありがとう。これは完璧に動作するはずです。とても有難い! –

+0

喜んで助けました。それを受け入れられた答えとしてマークすることができます。 –

関連する問題