猿问

一段比较正常的insert操作引发的重复插入奇怪情况

<!DOCTYPE html>

<html>

<head>

/*下面就是代码了,这段代码在linux服务器上运行成功,但是有点问题

问题1:mysql_系列语句在phpstrom里直接就被划掉了,说太老套。。。于是我只能换成mysqli_系列,这个是版本更替问题么?

问题2:这个php文件叫zsgc.php,我把前后端放到一个页面里了。。。于是,就出了一些奇怪的问题我无法理解。

            当我往text中添加数据后,第一次点击提交的按钮(submit),这时候select语句所输出的还没有刷新,这时候我F5刷新,出来刚插入的新数据了,此时text中是空白的,然后我再点一次提交按钮,居然又刷出来一条刚插入的数据(我没设置ID唯一性),就是插入了两条同样的数据。

          如果我第一次点了提交后,再点一次提交,那么会只刷一次数据,再点也不会再出了

          我的理解就是,我第一次点提交后,如果F5刷新,再提交,他会又一次进入else语句中(判定post【id】有值),如果第一次点提交后,再点提交,就不会进入第二次else语句中。

         这个情况让我很费解,虽然把页面分离后,不出现这种情况了,但是还是很好奇,不知道有没有大神来教导我一番,先谢过


*/

<?php

$con = mysql_connect("127.0.0.1","root","");

if (!$con)

{

  die('连接失败: ' . mysql_error());

}

mysql_select_db("zsgc", $con);

$result = mysql_query("SELECT * FROM user");

while($row = mysql_fetch_array($result))

{

echo $row['u_id'] . " " . $row['u_name'];

  echo "<br />";

}

if($_POST[id]==null)

echo "还未输入数据^_^";

else

{

$sql="INSERT INTO user (u_id, u_name)

VALUES ('$_POST[id]','$_POST[name]')";

if (!mysql_query($sql,$con))

  {

    die('错误: ' . mysql_error());

  }

else

  { 

    echo "1 record added";

  //unset($_POST['id']);

  //unset($_POST['name']);

  }

}

mysql_close($con);


?>

</head>

<body>


<form action="zsgc.php" method="post">

u_id: <input type="text" name="id" />

u_name: <input type="text" name="name" />

<input type="submit" value="插入数据" />

</form>

</body>

</html>


独聆步武
浏览 1450回答 2
2回答

独聆步武

(⊙﹏⊙)b并没有人回答我,还是自己找到答案。。

独聆步武

已经明白了,讲给同样问题的同学听,POST在刷新和回退的时候会出现重复提交数据的问题,所以抓取数据要分页面来进行编码,
随时随地看视频慕课网APP
我要回答