表单提交给我一个服务器错误

时间:2013-07-12 19:42:52

标签: php sql forms submit

我已经尝试过寻找问题,但我似乎无法弄明白。表单显示没有错误,但在谷歌浏览器上,当我尝试提交表单时,它只是说“服务器错误”。

<?php 
if (empty($_GET["entries"])) //check if the admin entered # of weeks
{ 
?>

<p>How many weeks do you want to make? </p>
<form action="" method="get">
    <input type="text" name="entries" placeholder="Number of weeks" />
    <br/>
    <input type="submit" name="submit_entries" />
</form>

<?php 
}
else
{
    //Second form
    if (isset($_POST["submit"])) //check if submitted
    {
        //Process form
        $entries=$_GET['entries'];
        $newWeeks=$_POST['week'];
        $db= mysql_connect("localhost", "root", "root");
        if(!$db) die("Error connecting to MySQL database.");
        mysql_select_db("onlineform", $db);

       $sql = "INSERT INTO onlineformdata (numberOfWeeks, newCampSessions) VALUES (" . PrepSQL($entries) . "," . PrepSQL($newWeeks) . ")";

        mysql_query($sql);
        if (mysql_query($sql) === FALSE) {
        die(mysql_error());
        }
        mysql_close();
    }
    else //if not submitted yet, show the form
    {
        echo '<form action="" method="post">';

        for ($count = 0; $count < $_GET["entries"]; $count++)
        {
            echo  'Enter a beginning to ending date for the week: <input type="text" name="week"><br/>';
        }

        echo '<input type="submit" name="submit"></form>';
    }
}

?>

也许是因为我不能让第一个表单有一个指向自己的动作(我在哪里使用method =“get”。

1 个答案:

答案 0 :(得分:0)

您似乎没有在任何地方定义PrepSQL()。如果是这种情况,你应该得到一个致命的错误,比如

  

致命错误:调用未定义的函数PrepSQL ...

一旦修复,如果你的插入查询失败,可能是因为缺少封闭引号的值。

对于将来的调试,您可以打开错误:

error_reporting(E_ALL);
ini_set('display_errors', '1');

或者您可以只观察服务器的错误日志。如何完成取决于服务器设置,所以我建议向主机询问方向。

旁注:

  • 不推荐使用mysql_*库,请考虑升级到PDO或MySQLi
  • 首选使用Prepared Statement将变量连接到SQL中。