2011-07-26 45 views
2

我刚开始在PHP中编写代码, 我写了我的第一个php + mysql通过web窗体插入数据的程序。它工作正常,但每当我刷新页面,它会自动保存空记录到我的数据库。 我知道在.NET中的解决方案是ispostback,但不是在PHP? 有人可以给我一些PHP的想法。PHP中ispostback(.NET)的等价物是什么?

代码是在这里:

<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

复制代码:http://stackoverflow.com/questions/4242035/checking-if-request-is-post-back-in-php – Radu

+0

SQL注入!!!!使用此后使用 –

回答

4

你试过if ($_SERVER['REQUEST_METHOD']=='POST')

更新答案

if ($_SERVER['REQUEST_METHOD']=='POST') { 
[insert...] 
header('Location: added_record.php'); 
} 
+0

。现在不用插入空值,而是重复表单中以前输入的数据。 –

+0

使用重定向:标题('location:added.php');即使是在同一页面。 –

1

当您使用POST方法,这是更好(恕我直言)使用$ _POST而不是$ _REQUEST。要检查您是否有数据,可以使用isset($_POST['txtFirstName']);。如果你需要的所有数据,这是最好的所有输入字段做到这一点,导致

if(isset($_POST['txtFirstName']) && isset($_POST['txtLastName']) && isset($_POST['txtAge'])) { 
    // do stuff 
} 

如果你想知道是否有使用后提交的任何领域,你可以使用if(!empty($_POST)) {

附注:我知道您刚刚启动PHP,在查询中使用用户生成的代码可能相当危险。当你在网上建立东西时,让所有人都可以联系到,请阅读一下SQL injection。当有人输入撇号(')时,这也会阻止你的代码被破坏。

相关问题