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 ループ内。必ずループを閉じて、$row ではなく $_POST でデータを取得してください...

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 に答える