将相同数据插入数据库

时间:2013-05-02 08:57:58

标签: php mysql

我有一个基于网络的表格,接受学生的信息。在我插入数据后,我希望它仍然可用,即使我刷新浏览器也意味着2行是相同的,但我不想再次插入相同的数据。怎么可能呢?

我的代码在这里:

<form method="post" action="insert.php" >
    <table>
        <tr>
            <td width="22%"> Name</td>
            <td width="4%"></td>
            <td width="74%"><input type="text" name="name"  > </td>
        </tr>
        <tr>
            <td>Information </td>
            <td></td>
            <td><input type="text" name="infomn" ></td>
        </tr>
        <tr>
            <td>Email </td>
            <td></td>
            <td><input type="text" name="email" ></td>
        </tr>
        <tr>
            <td>Password </td>
            <td></td>
            <td><input type="password" name="password" ></td>
        </tr>
        <tr>  
            <td colspan="3"> </td>
        </tr>
        <tr>
           <td></td>
           <td></td>
           <td ><input type="submit" name="submit" value="Insert"  >
        </td>
        </tr>
    </table>
</form>

insert.php:

include("connect.php");

if($_POST['submit']){

    $name=$_POST[name];
    $info=$_POST[infomn];
    $emal=$_POST[email];
    $password=$_POST[password];

    $query = "insert into student(name,designation,email,password) values('$name','$info','$emal','$password')";

    mysql_query($query) or die("not successfully insert".mysql_error());

?>}

4 个答案:

答案 0 :(得分:1)

在尝试插入数据之前,我会检查您的值是否已填满。

if ($_POST['name']) {
    //Validate, escape, insert...
} else {
    //Display form...
}

请请make sure the data you insert into the database is escaped,特别是如果您正在使用学生数据。

答案 1 :(得分:1)

目前它看起来像这样:

  1. 信息发布到insert.php
  2. 您位于insert.php中,并且发布的变量也存在。
  3. 使用现有数据执行数据库。
  4. 你刷新。
  5. 您永远不会离开页面,因为刷新会让您转到同一页面,因此浏览器会假定不应删除已发布的数据,而是再次使用。
  6. 为避免这种情况,您必须添加

    header("Location: index.php");
    

    或类似的代码,以确保在执行数据库执行后用户不会停留在同一页面上。

答案 2 :(得分:0)

浏览器刷新将最后一个操作(再次)发布到服务器。

使用发布/重定向/获取模式http://en.wikipedia.org/wiki/Post/Redirect/Get),即在成功操作后始终重定向(在您的案例数据库插入中)。

答案 3 :(得分:0)

insert.php:

include("connect.php");

if(isset($_POST['submit'])) { // put isset() for checking if it submitted or not

$name=$_POST['name'];

$info=$_POST['infomn'];

$emal=$_POST['email'];

$password=$_POST['password'];


$query = "insert into student(name,designation,email,password)

          values('$name','$info','$emal','$password')";

if(mysql_query($query)) {
 header('Location:your_form_page.php'); // redirect to avoid inserting data while refreshing
}else { 
mysql_error() };

}

建议:尝试使用 PDO How can I prevent SQL injection in PHP?