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);
就足够了吗?