-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_函数,因为它们已被弃用。查看mysqli_PDO。请注意,您的脚本容易受到 SQL 注入的攻击。

您的脚本不起作用的原因是因为您似乎调用mysql_fetch_assoc了两次。第二次调用它时,如果您的查询只返回一行,则不会有任何输出。

$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 行吗?您正在调用 fetch 1 次,因此第二次它将尝试获取第二行。

也尝试将查询直接运行到 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

更新:我重读了您的问题,您似乎想显示表中的所有 uname。最初的查询是检查用户是否是管理员。

这是它的样子。但这只是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 回答