0

我试图寻找问题,但我似乎无法弄清楚。表单显示没有错误,但在谷歌浏览器上,当我尝试提交表单时,它只会显示“服务器错误”。

<?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".

4

1 回答 1

0

您似乎没有定义PrepSQL()任何地方。如果是这种情况,您应该会遇到致命错误,例如

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

一旦解决了这个问题,如果您的插入查询失败,可能是因为缺少引号的值。

为了将来的调试,您可以打开错误:

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

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

边注:

  • mysql_*库已弃用,请考虑升级到 PDO 或 MySQLi
  • 使用Prepared Statement优于将变量连接到 SQL 中。
于 2013-07-12T19:54:47.073 回答