tpaksuですでに述べたように、ループで実行するステートメントを角かっこで囲む必要があります。
次に、エコーの正しい形式は次のとおりです。
echo $user_id;
そして、他の2つの、かなり基本的な発言
- mysql呼び出しは非推奨になりました。これは、それらが新しい代替手段(具体的には、mysqliまたはより適切にはPDO)に置き換えられたことを意味します。mysql *ファミリーの呼び出しの使用方法を学ぶのに時間を無駄にしないでください。今すぐ、mysqliまたはできればPDOに切り替えてください。
- 変数がそのままSQLステートメントに含まれているようなSQLステートメントは、 SQLインジェクション
"SELECT user_id, team FROM users WHERE username = '$username'");
の大きなリスクです。含める前に変数をサニタイズするためにあらゆる種類の巧妙なスキームを考案する貴重な時間を無駄にする可能性があります。または、プリペアドステートメントを使用するという唯一の正しい方法でそれを行うことを学ぶことができます。一見直感的ではないかもしれませんが、すぐに慣れます。
これにより、コードが次のように変換されます。
<?php
$stmt = $dbh->prepare("SELECT user_id, team FROM users WHERE username = ?");
if ($stmt->execute(array($username))) {
while ($row = $stmt->fetch()) {
$user_id = $row['user_id'];
$team = $row['team'];
echo $user_id;
echo $team;
}
}
?>
これは注入防止であり、最新の技術を使用しています。ボーナスの副作用として、他のブランドのデータベースへの適応がはるかに簡単になります。