0

オンライン ゲームを作成していますが、データベースのいくつかのフィールドの更新に問題があります。フォームとphpコードは次のとおりです。

<form method='post'>
                <div style="float: left; width: 630px; color: white;">
                    <div style="float: left; width: 400px; background: #555; height: 20px;">
                        <?php
                        if ($row['Protected'] == 1)
                        {
                            ?>
                            <img src="images/pass.png"></img>
                            <input type="password" name="pass" placeholder="Password" style="height: 18px;" />
                            <?php
                        }
                        echo("<input type='submit' name='enter' style='background: #555; text-decoration: underline;' value='$row[Name]' />");
                        ?>
                    </div>
                    <div style="float: right; width: 229px; background: #555; margin-left: 1px; height: 20px;">
                        <?php
                        echo($row['NrPlayers']);
                        echo("/");
                        echo($row['MaxPlayers']);
                        echo(" Players");
                        ?>
                    </div>
                    <div style="clear: both;">
                        <?php
                        echo($row['Descr']);
                        ?>
                    </div>
                    <div style="background: #ccc; font-size: 13px; margin-bottom: 2px; color: black;">
                        <?php
                        echo($row['FName']);
                        echo(" ");
                        echo($row['LName']);
                        ?>
                    </div>
                    <input type="hidden" name="id" value="<?php$row['Id_Room']?>" />
                <input type="hidden" name="protect" value="<?php$row['Protected']?>" />
                <input type="hidden" name="password" value="<?php$row['Pass']?>" />
                <input type="hidden" name="nr" value="<?php$row['NrPlayers']?>" />
                </div>
            </form>
<?php
                if (isset($_POST['enter']))
                {
                    if ($_POST['protect'] == 1)
                    {
                        if ($_POST['pass'] == $_POST['password'])
                        {
                            $nr = $_POST['nr'] + 1;
                            mysql_query("upadte users set Id_Room = '$_POST[id]' where Id_User = '$_SESSION[id]'");
                            mysql_query("update rooms set NrPlayers = '$nr' where Id_Room = '$_POST[id]'");
                            header("Location: game.php");
                        }
                        else
                        {
                            ?>
                            <span style="color: red; text-align: center;">The password you entered is incorrect.</span>
                            <?php
                        }
                    }
                    else
                    if (($_POST['protect'] == 0))
                    {*/
                        $nr = $_POST['nr'] + 1;
                        mysql_query("upadte users set Id_Room = '$_POST[id]' where Id_User = '$_SESSION[id]'");
                        mysql_query("update rooms set NrPlayers = '$nr' where Id_Room = '$_POST[id]'");
                        header("Location: game.php");
                    }
                }
            ?>

2 つの更新と 1 つのリダイレクトがあります。したがって、更新は機能しませんが、リダイレクトは機能します。

4

1 に答える 1

0

ステップ1:

フォームをテンプレートに送信し、フォーム スコープからすべての値をダンプして、フォームから必要なものを取得できるようにします。

ステップ2:

いくつかのテスト値を使用して、mysql ワークベンチや php myAdmin などのクエリ エディターでクエリを記述し、クエリが機能するようにします。

ステップ 3:

クエリを生成するコードを php で記述しますが、実行する代わりに画面に出力します。出力がステップ 2 で設計したクエリのようになるまで、これを行います。

ステップ 4:

ページを完成させてクエリを実行し、タイプミス、構文エラー、セキュリティ ホールに注意してください。次に、クエリから結果をダンプします。

現在のコードで確認する必要があること:

mysql_query("upadte users set Id_Room = '$_POST[id]' where Id_User = '$_SESSION[id]'");

タイプミス - 'upadte' 、インライン置換 - Id_Room = '{$_POST['id']}'。

大量のコードを投稿して助けを求める前に、必ず徹底的なデバッグ手順を実行してください。

于 2012-07-13T14:54:45.727 に答える