PHP MSQL表单提交失败

PHP MSQL表单提交失败,php,mysql,forms,Php,Mysql,Forms,我试图通过提交表单数据在数据库中创建一个新条目。 它没有任何错误地完成整个代码,但在数据库中没有显示任何新元素 有人知道发生了什么事吗 }elseif(isset($_GET["new"])){//add new if($_GET['changeme']=="yes") //if user pressed save, then update table { $name = $_POST["name"]; $active = $_POST[

我试图通过提交表单数据在数据库中创建一个新条目。 它没有任何错误地完成整个代码,但在数据库中没有显示任何新元素

有人知道发生了什么事吗

}elseif(isset($_GET["new"])){//add new 
        if($_GET['changeme']=="yes") //if user pressed save, then update table
    {
        $name = $_POST["name"];
        $active = $_POST["active"];
        $email = $_POST["email"];
        $training = $_POST["training"];
        $trials = $_POST["trials"];
        $BHV = $_POST["BHV"];
        $tours = $_POST["tours"];
        $pasnr = $_POST["pasnr"];
        $pasactivated = $_POST["pasactivated"];
        $pastested = $_POST["pastested"];   

        mysql_query("INSERT INTO Members (name, active, email, training, trials, BHV, tours, pasnr, pasactivates, pastested) VALUES
                    ('$name', '$active', '$email', '$training', '$trials', '$BHV', '$tours', '$pasnr', '$pasactivates', '$pastested')"); 
        //show end text
        echo "Edit complete!<br />
        <form><input type='button' onClick=\"parent.location='users.php'\" value='OK'></form>";
    }else{//user didn't press save

    ?>
    <!--Edit form-->
    <form action="users.php?new=1&changeme=yes" method="post">
    Name:<br>
    <input name="name" type="text" value="name" size="79"><br>
    <input type="checkbox" name="active" value="1" />Active 
    <input type="checkbox" name="BHV" value="1"  />BHV 
    <input type="checkbox" name="pasactivated" value="1"  />Pas activated 
    <input type="checkbox" name="pastested" value="1"  />Pas Tested <br>
    E-mail: <br>
    <input name="email" type="text" value="email" size="79"><br>
    Training Dates: <br>
    <input name="training" type="text" value="training" size="79"><br>
    Trial Dates: <br>
    <input name="trials" type="text" value="trials" size="79"><br>
    # Tours: <br>
    <input name="tours" type="text" value="tours" size="79"><br>
    Pas Nummer: <br>
    <input name="pasnr" type="text" value="pasnr" size="79"><br>
    <input type="submit" name="Submit" value="Create">
    <input type='button' onClick="parent.location='users.php'" value='Back to list'>
    </form>

    <?
}}
}elseif(isset($\u GET[“new”]){//add new
如果($\u GET['changeme']==“yes”)//如果用户按了保存,则更新表
{
$name=$_POST[“name”];
$active=$_POST[“active”];
$email=$_POST[“email”];
$training=$_POST[“training”];
$trials=$_POST[“trials”];
$BHV=$_POST[“BHV”];
$tours=$_POST[“tours”];
$pasnr=$_POST[“pasnr”];
$pasactivated=$_POST[“pasactivated”];
$pastested=$_POST[“pastested”];
mysql_查询(“插入到成员中(名称、活动、电子邮件、培训、试用、BHV、旅行、pasnr、PASACTIVES、粘贴测试)值
(“$name”、“$active”、“$email”、“$training”、“$trials”、“$BHV”、“$tours”、“$pasnr”、“$PASACTIVES”、“$pastested”);
//显示结束文本
echo“编辑完成!
"; }否则{//用户未按保存 ?> 名称:

活跃的 BHV Pas激活 Pas测试
电子邮件:

培训日期:

审判日期:

#旅游:

Pas Nummer:


请改为使用此行:

mysql_query("INSERT INTO Members (name, active, email, training, trials, BHV, tours, pasnr, pasactivates, pastested) VALUES
                    ('$name', '$active', '$email', '$training', '$trials', '$BHV', '$tours', '$pasnr', '$pasactivates', '$pastested')");
记住在以这种方式插入变量之前要对变量进行清理,或者,也可以使用准备好的语句

此外,如果可能的话,鼓励使用mysqli扩展而不是mysql

请阅读以下链接,它将帮助您处理mysql错误:


您的代码假设mysql\u query()未经检查即成功。如果您的查询成功,则语句将返回true;如果查询不成功,则语句将返回false。您应该检查返回值,并根据需要使用mysql\u error()获取错误消息

出于调试目的,这可以通过以下方式完成:

mysql_query(...) or die( mysql_query() )
但是,在生产代码中,这可能会给用户带来难看的错误。生产安全的方法是记录或通过电子邮件发送错误:

$response = msyql_query('INSERT INTO ...');
if (false === $response) { 
    // Log or email the output of mysql_error()
}
实施错误日志记录时,您可能会发现由于变量命名错误,导致查询失败。您可以在此处分配一个变量:

$pasactivated = $_POST["pasactivated"];
但在查询中,它的拼写不同:

mysql_query(...'$pasactivates'...);

最后,您应该注意,您的查询会使您的数据库受到SQL注入攻击。在插入数据库之前,所有用户输入都应该经过清理。如果必须使用
mysql\u
函数,则可以使用
mysql\u real\u escape\u string()为了逃避输入,但是为了获得最好的结果,考虑用PDO替换被禁止的<代码> MySqL**/Cuff>函数和使用参数化的查询。< /P>在<代码> MySqLyError()/>代码>上读取,而您是我的英雄。(我以前在我的服务器上有所有的错误,但现在我的主机改变了它,所以我不习惯用这种方式处理错误)啊,好的,这很有效。谢谢。:P从我的理解来看,这也不是很安全?所以基本上把每个变量放在
$any_variable=mysql_real_escape_string($any_variable);
就足够了吗?