$id = mysql_query("SELECT id FROM account WHERE username='".$username."' LIMIT 1") or die(mysql_error);
$_SESSION['id'] = $id ;
echo ("ID: ".$_SESSION["id"]."");
「ID: 0」を出力しますが、データベース内のアカウントの ID は代わりに 1 にする必要があります。助けてください!
mysql_query
リソースを返します。mysql_fetch_array()
返された結果リソースは、返されたデータにアクセスするために、 および結果テーブルを処理する他の関数に渡される必要があります。
$result = mysql_query("SELECT id FROM account WHERE username='".$username."' LIMIT 1") or die(mysql_error);
while ($row = mysql_fetch_assoc($result))
{
$_SESSION['id'] = $row['id'] ;
}
echo ("ID: ".$_SESSION["id"]."");
補足として、変数のSQL Injection
値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements
これを試して
$id = mysql_query("SELECT id FROM account WHERE username='".$username."' LIMIT 1") or die(mysql_error);
while($myid = mysql_fetch_array($id)){
$_SESSION['id'] = $myid ;
}
echo ("ID: ".$_SESSION["id"]."");