我刚开始用PHP编码, 我写了第一个用于通过网络表单插入数据的 php + mysql 程序。它工作正常,但每当我刷新页面时,它会自动将空记录保存到我的数据库。 我知道.NET中的解决方案是ispostback,但不是在PHP? 有人可以用PHP给我一些想法。
代码在这里:
<body>
<form action="mySQLTest.php" method="post">
First Name :<input type="text" name ="txtFirstName"/> <br/>
Last Name: <input type="text" name ="txtLastName"/> <br/>
Age : <input type="text" name= "txtAge" /> <br/>
<input type="submit"/>
</form>
<?php
$con = mysql_connect("localhost","root","");
if(!$con)
{
die('Could not Connect:' .mysql_error());
}
mysql_select_db("test", $con);
if($_REQUEST[])
{
$sql1 = "Insert into info(FirstName, LastName, Age) Values('$_POST[txtFirstName]','$_POST[txtLastName]','$_POST[txtAge]')";
}
if(!mysql_query($sql1, $con))
{
die('Error: '.mysql_error());
}
else
{
echo "1 Record Added";
}
mysql_close($con)
?>
</body>
答案 0 :(得分:4)
您是否尝试过if ($_SERVER['REQUEST_METHOD']=='POST')
更新回答:
if ($_SERVER['REQUEST_METHOD']=='POST') {
[insert...]
header('Location: added_record.php');
}
答案 1 :(得分:1)
当你使用POST方法时,最好(imho)使用$ _POST而不是$ _REQUEST。要检查您是否有数据,可以使用isset($_POST['txtFirstName']);
。如果您需要所有数据,最好对所有输入字段执行此操作,从而产生
if(isset($_POST['txtFirstName']) && isset($_POST['txtLastName']) && isset($_POST['txtAge'])) {
// do stuff
}
如果您想知道是否有任何使用帖子提交的字段,您可以使用if(!empty($_POST)) {
。
旁注:我知道你刚刚启动PHP,在查询中使用用户生成的代码可能非常危险。当您在线构建内容时,每个人都可以访问,请阅读SQL injection。当有人输入撇号(')时,这也会阻止您的代码中断。