0

データベースから 2 つのことをエコーアウトしようとしていますが、なぜこれが機能しないのですか? どうすればこれを機能させることができますか。私はPHPを学んでいるので、これが本当にばかげた質問なら申し訳ありません。

$result = mysql_query("SELECT user_id, team FROM users WHERE username = '$username'");
while($row = mysql_fetch_array($result))
$user_id = $row['user_id'];
$team = $row['team'];

echo = $user_id;
echo = $team;`

あなたが提供できる助けに感謝します!

4

2 に答える 2

3

次のようにコードをグループ化するには、括弧を使用する必要があります。

$result = mysql_query("SELECT user_id, team FROM users WHERE username = '$username'");
while($row = mysql_fetch_array($result))
{
    $user_id = $row['user_id'];
    $team = $row['team'];

    echo $user_id;
    echo $team;
}
于 2012-12-13T23:41:41.217 に答える
0

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;
    }
  }
?>

これは注入防止であり、最新の技術を使用しています。ボーナスの副作用として、他のブランドのデータベースへの適応がはるかに簡単になります。

于 2012-12-13T23:48:02.570 に答える