0

页面在重新加载或使用 mysql 查询时创建数据库条目时。我已经设置好了,所以当您点击提交时,它会将数据插入数据库,但由于某种原因在页面重新加载时,甚至当您转到它时,它会在不点击提交的情况下创建另一个数据库条目。

<?php

    $con = mysql_connect("xxx","xxxx_user","xxx");
    if (!$con)
      {
die('Could not connect: ' . mysql_error());
  }

mysql_select_db("jjlliinn_test", $con);

$date = $_POST['date'];
$propertydescription = $_POST['propertydescription'];
$transactiontype = $_POST['transactiontype'];
$applicabledocument = "null";
$received = $_POST['received'];
$paid = $_POST['paid'];

$sql = mysql_query("INSERT INTO `transactions` (`date`, `agentclient`, `propertydescription`, `transactiontype`, `applicabledocument`, `received`, `paid`) 
VALUES
 ('$date', '$agentclient', '$propertydescription', '$transactiontype', '$applicabledocument', '$received', '$paid')") or die(mysql_error()); 
$query = mysql_query($sql);


mysql_close($con);
    ?>
4

2 回答 2

1

首次加载页面时发生这种情况的原因是您没有检查是否已提交表单。您只是自动插入到数据库中。

要解决此问题,您需要检查表单提交。假设您使用的是 POST,您可以将上述代码包装在 if 语句中,以检查这是否是表单提交,如果是,则处理数据:

if ('POST' === $_SERVER['REQUEST_METHOD'])
{
    // your code goes here
}

当有人刷新页面时会发生这种情况的原因是由于上述原因,并且您也没有采取任何措施来阻止浏览器再次重新提交表单数据,而他们通常在请求页面时会这样做。查看POST/REDIRECT/GET 模式来解决这个问题。

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程。您还对SQL 注入持开放态度

于 2013-06-04T02:22:30.270 回答
0

我敢打赌您的代码在 HTML<form></form>标记中。刷新/重新加载页面浏览器会SUBMIT再次触发表单。

我建议在 , 之后mysql_close($con);使用header()并重定向到同一页面。

看看这个问题

于 2013-06-04T02:21:28.070 回答