Mysql数组不起作用

时间:2012-10-06 03:41:29

标签: php mysql database

我试图将数据库中的所有用户行作为表单中的选择进行回显。

它只显示一个空格。没别了。

这是我的代码。

<?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 个答案:

答案 0 :(得分:2)

首先,请停止使用mysql_函数deprecated。查看mysqli_PDO。请注意,您的脚本容易受到SQL注入的攻击。<​​/ p>

您的脚本无法正常工作的原因是因为您似乎正在调用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>';
     }

答案 1 :(得分: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>";
}

答案 2 :(得分:0)

更新: 我重新阅读了您的问题,似乎您想要显示表格中的所有名称。 原始查询是检查用户是否是管理员。

这是它的样子。但它只是njk's answer.

的副本
<?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.";
}

?>

答案 3 :(得分:0)

您确定您的数据库有多行吗?你正在调用fetch 1次,所以它第二次尝试获取第二行。

还尝试将查询直接运行到mysql中,看看你是否得到了你期待的行,可能是它没有返回你的预期