PHP没有正确插入数据库

时间:2013-05-03 02:31:53

标签: php mysql database

我将我的代码从非常长的GET语句(正确的单词?)转换为每个页面的单独文件。我将要显示的代码在我将其移动到自己的文件之前工作正常。

页面的完整代码是:

    <?
    require_once('./inc/glob_head.php');

    $database->openConnection();

    $listOfGamesQuery = $database->queryDB("SELECT * FROM mainSite_games");

    if (isset($_GET) && $_GET['action'] == 'deleteGame') 
    {
        $gameID = $_GET['gameID'];
        $database->queryDB("DELETE FROM mainSite_games WHERE id='$gameID'");
        redir('viewGames.php');
    }
    elseif (isset($_GET) && $_GET['action'] == 'editGame')
    {
        $gameID = $_GET['gameID'];
        $gameNameQry = $database->queryDB("SELECT gameName FROM mainSite_games WHERE id='$gameID'");
        while ($gameNameDta = $database->fetchArray($gameNameQry))
        { 
            $gameName = $gameNameDta['gameName'];
        }

        $gameDescQry = $database->queryDB("SELECT gameDesc FROM mainSite_games WHERE id='$gameID'");

        while ($gameDescDta = $database->fetchArray($gameDescQry))
        { 
            $gameDesc = $gameDescDta['gameDesc'];
        }
    ?>
    <form name="editGame" id="editGame" action="viewGames.php?action=processEdit&gameID=<? echo $gameID; ?>" method="POST">
        <input type="text" name="gameName" value="<? echo stripslashes($gameName); ?>" /><br />
        <textarea name="gameDesc" class="span12" rows="10"><? echo stripslashes($gameDesc); ?></textarea><br />
        <input type="submit" name="submitEditGame" class="btn btn-primary" />
    </form>
    <?
    }
    elseif (isset($_GET) && $_GET['action'] == 'processEdit')
    {
        $gameID = $_GET['gameID'];
        $gameName = $database->escapeString($_POST['gameName']);

        $gameDesc = $database->escapeString($_POST['gameDesc']);

        $database->queryDB("UPDATE mainSite_games SET gameName='$gameName' WHERE id='$gameID'");

        $database->queryDB("UPDATE mainSite_games SET gameDesc='$gameDesc' WHERE id='$gameID'");

        redir('viewGames.php');

    } else {
                    echo '<div class="contCont">';
                        echo '<table>';
                            echo '<thead>';
                                echo '<tr>';
                                    echo '<th>Game Name</th>';
                                    echo '<th>Delete</th>';
                                    echo '<th>Edit</th>';
                                echo '</tr>';
                            echo '</thead>';
                            echo '<tbody>';
                                while ($listOfGames = $database->fetchAssoc($listOfGamesQuery)) {
                                    echo '<tr>';
                                        print '<td>' . stripslashes($listOfGames['gameName']) . '</td>';
                                        print '<td><a href="viewGames.php?action=deleteGame&gameID='.$listOfGames['id'].'">Delete</a></td>';
                                        print '<td><a href="viewGames.php?action=editGame&gameID='.$listOfGames['id'].'">Edit</a></td>';
                                    echo '</tr>';
                                }
                            echo '</tbody>';
                        echo '</table>';
                     echo '</div>';
                echo '</div>';
            echo '</div>';
        echo '</body>';
    echo '</html>';
}
$database->closeConnection();
?>

glob_head只提供数据库类,数据库连接,函数文件要求以及站点周围不变的样式/页面结构。说完这个之后,$ database调用不是错误,实际上是在其他地方定义的。

现在的问题是,在上面的代码中,editGame elseif块成功地从数据库中提取信息,因此我假设它必须正确获取信息。现在,当用户单击提交时,它会将它们带到下一个块,processEdit,并且由于某种原因使这些字段为空并在数据库中设置空白值。我不知道是怎么回事。也许这需要一双新鲜的眼睛?提前谢谢。

供您参考,'redir'调用是一个自定义函数,它使用javascript重定向而不是依赖于标题。我发现它比更改代码结构更清晰,更容易使用。

1 个答案:

答案 0 :(得分:0)

您正在提交METHOD="POST",但正在查看$_GET超全局变量。 $_GET变量为空,因为没有提交GET。

$_GET的所有实例更改为$_REQUEST(或$_POST),或将METHOD="POST"更改为"METHOD="GET"