私は比較的新しい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人以上のユーザーがオンラインの場合、最後のユーザーのみが表示されます(上書きされます)。
は、インスタンスの作成データを出力するようにしよう:ここ
は、私は現時点でこれをプリントアウトしようとしています方法です。
あなたのwhileループの$のreturnArrに、次の試してみてください=常に最後の結果を持っています、$ returnArr [] = –
はどうもありがとうございましてみてください!私は本当にこの答えに感謝し、それを見て別の人を持って、この解決は問題に完全に答えます。しかし、これはちょうど痛いほど明白になった。大いに尊敬します。 :) –