0

我已经为用户权限和排名建立了一个页面,而不是每次我想更改某人的排名或其他任何东西时都与 phpmyadmin 打交道。现在,我遇到了这个查询的问题,每次我运行所有用户都会获得相同的排名。

$sql = "SELECT * FROM users ORDER BY rank DESC LIMIT $start_from, 20"; 
                $rs_result = mysql_query($sql) or die(mysql_error);


                while ($row = mysql_fetch_assoc($rs_result)) { 
                    echo "
                    <tr>
                    <td>".$row['username']."</td>
                    <td>".$row['rank']."</td>
                    <td>
                    <form action='' method='post'>
                    <select name='rank'>
                    <option value='member'>Member</option>
                    <option value='moderator'>Moderator</option>
                    <option value='supermoderator'>Supermoderator</option>
                    <option value='administrator'>Administrator</option>
                    </select>
                    <input type='submit' name='change' value='Change' />
                    </form>
                    </td>
                    </tr>
                    ";

                if (isset($_POST['change'])) {

                    $sql_rank = "UPDATE users SET rank = '".$_POST['rank']."' WHERE username = '".$row['username']."'";
                    $res_rank = mysql_query($sql_rank) or die(mysql_error());

                }
4

2 回答 2

1

你有

if (isset($_POST['change'])) {

                    $sql_rank = "UPDATE users SET rank = '".$_POST['rank']."' WHERE username = '".$row['username']."'";
                    $res_rank = mysql_query($sql_rank) or die(mysql_error());

                }

在while循环内。确保关闭循环并使用 $_POST 而不是 $row 获取数据...

if (isset($_POST['change'])) {
      $sql_rank = "UPDATE users SET rank = '".$_POST['rank']."' WHERE username = '".mysql_real_escape_string($_POST['username'])."'";
       $res_rank = mysql_query($sql_rank) or die(mysql_error());

}

也请考虑尝试 mysqli 或 PDO

于 2013-06-08T19:44:29.440 回答
0

是的,您没有准确地传输用户的信息;您只检查isset($_POST["change"])哪些没有提供有关哪个用户的任何信息;它仅表示<input name="change"... />已提交任何带有 an 的发布请求。

我建议在一些隐藏的输入字段中添加值,例如echo '<input type="hidden" name="username" value="'.$row['username'].'" />';

然后添加您的 if 条件:$_POST["username"] == $row['username']


您还应该考虑升级到 mysqli 或 PDO。

于 2013-06-08T19:45:17.833 回答