-2

データベース内のすべてのユーザー行をフォームの選択としてエコーアウトしようとしています。

空白のみを表示しています。他には何もありません。

これが私のコードです。

<?php
session_start();
require('../../config.php');
$user = $_SESSION['user'];
$qry=("SELECT `rank`,  `uname` FROM users WHERE `uname` = '$user'");
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$rank = $row['rank'];
$logged = $_SESSION['loggedin'];
  if ($logged == true) {
   if ($rank >= 3) {
    echo "Succesful, $user.<br />
      <form method='POST' action='delete.php'>
      <select><option>Please select</option>";
      while ($row = mysql_fetch_assoc($result)) {
            $users = $row['uname'];
            $lol = ucwords($users);
           }
       echo "<option>$lol</option>";
       echo "</select>
    </form>";
   } else {
  echo "Your not an admin. $user";
  }
 } else {
echo "Please login.";
}

?>
4

4 に答える 4

2

まず、非推奨mysql_になっている関数の使用を停止してください。またはを調べます。スクリプトは SQL インジェクションに対して脆弱であることに注意してください。mysqli_PDO

スクリプトが機能しない理由は、mysql_fetch_assoc2 回呼び出しているように見えるためです。2 回目に呼び出したときに、クエリが単一の行のみを返す場合、出力はありません。

$qry=("SELECT `rank`,  `uname` FROM users WHERE `uname` = '$user'");
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$rank = $row['rank'];

クエリ (以下のようなもの) を再送信し、その結果を個別に呼び出してドロップダウンに入力するか、結果を配列に格納する必要があります。

$qry=("SELECT `uname` FROM users");
$result=mysql_query($qry);
while ($row = mysql_fetch_assoc($result)) {
      echo '<option>' . ucwords($row['uname']) . '</option>';
     }
于 2012-10-06T04:01:58.307 に答える
0

データベースに複数の行がありますか? フェッチを 1 回呼び出しているため、2 回目は 2 番目の行をフェッチしようとします。

また、クエリを mysql に直接実行してみて、期待どおりの行が返されるかどうかを確認してください。期待どおりに返されない可能性があります。

于 2012-10-06T04:34:33.763 に答える
0

while ループが正しく設定されていないようです。変更する必要があると思います

while ($row = mysql_fetch_assoc($result)) {
  $users = $row['uname'];
  $lol = ucwords($users);
}
echo "<option>$lol</option>";

これに

while ($row = mysql_fetch_assoc($result)) {
  $users = $row['uname'];
  $lol = ucwords($users);
  echo "<option>$lol</option>";
}
于 2012-10-06T04:07:16.290 に答える
0

更新:あなたの質問を読み直しましたが、テーブルからすべての unames を表示したいようです。元のクエリは、ユーザーが管理者かどうかを確認することでした。

これがどのように見えるかです。しかし、それはnjkの 答えの複製です。

<?php
session_start();
require('../../config.php');
$user = $_SESSION['user'];
$qry=("SELECT `rank`,  `uname` FROM users WHERE `uname` = '$user'");
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$rank = $row['rank'];
$logged = $_SESSION['loggedin'];
  if ($logged == true) {
   if ($rank >= 3) {
    echo "Succesful, $user.<br />
      <form method='POST' action='delete.php'>
      <select><option>Please select</option>";

      // added these 2 lines
      $qry=("SELECT `rank`,  `uname` FROM users");
      $result=mysql_query($qry);

      while ($row = mysql_fetch_assoc($result)) {
            $users = $row['uname'];
            $lol = ucwords($users);
            echo "<option>$lol</option>";
           }

       echo "</select>
    </form>";
   } else {
  echo "Your not an admin. $user";
  }
 } else {
echo "Please login.";
}

?>
于 2012-10-06T04:10:08.713 に答える