私はログインしているすべてのユーザーからさまざまな統計情報を取得しようとしています。現在ログインしているときに私はユーザー名でセッションを設定しています。次に、私はこのユーザー名からIDを取得し、同じIDを持つテーブルを再度チェックし、そのテーブルから行をフェッチしようとしています。ユーザー名と一致IDをセッションとして取得する方法は?
私の推測では、ログイン時にユーザー名のみのセッションを開始しているので、セッションがID行を提供しないためデータを取得するコードが動作しません。私はそれをする方法を確信している、または私はそれについても正しい場合。
私はすべての助けを感謝します、私は本当にここで立ち往生しています。
これは私のログインコードです:
$query = "SELECT password FROM users WHERE username = '$username'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
//USERDATA
$dbPassword = $row['password'];
if (password_verify($password, $dbPassword))
{
// echo "The details are correct.";
$_SESSION['loggedin'] = $username;
require_once('../../frontend/templates/account-actions.php');
}
else
{
echo "Passwords do not match!";
}
これは、ログインしたユーザ名のIDからの統計データをフェッチするために私のコードです:
$id = $_SESSION['loggedin'];
$query = "SELECT * FROM stats WHERE id='$id'";
$stmt = mysqli_query($conn, $query);
$result = mysqli_fetch_all($stmt,MYSQLI_ASSOC);
あなたのアプローチを修正する必要があります。原則として、すべてのテーブルに常にAuto Increment IDがあります。これにより、各エントリに固有の価値が与えられます。ユーザーのテーブルも同じです。ログインするときは、ログインしたユーザーのユーザーテーブルから自動インクリメントIDを保存します。だからSELECT *の代わりにSELECT *、言い表せないほどです。いいえ、あなたの統計表には、関係を持つためにここにユーザーテーブルからの自動増分IDを格納します。 –
あなたはページの一番上にsession_startを作成しました – whoami
@MohammedAkhtarZuberi私は、自分のユーザーテーブルに自動インクリメントIDを持っています。私のSELECTを見て、それを変更するためにiveが始めました。この関係を作成する必要がありますか?私はセレクトパスワードの代わりにSELECT *を使うとログインがパスワードを確認する方法を本当に理解していませんか? – Peterssoen