php - 为什么 PHP 从一个数据条目向 MySQL 插入多行?

标签 php mysql database

我有一个 HTML 代码可以创建一个模板来收集 5 个变量。这些变量被发布到处理信息并将其转发到 mySQL 数据库的 php。

HTML 模板如下:

<html>

<head>
</head>

<body>
    <form action="insert.php" method="post">
        <p>Value1 <input type="text" name="value1" /></p>
        <p>Value2 <input type="text" name="value2" /></p>
        <p>Value3 <input type="text" name="value3" /></p>
        <p>Value4 <input type="text" name="value4" /></p>
        <p>Value5 <input type="text" name="value5" /></p>

        <input type="Submit" />

    </form>
</body>

</html>

这是与 MySQL 交互的 PHP 表单(请注意,# 已替换为原始表单中的实际值):

<?php
$server="#####"; 
$username="#####";
$password="######";
$database="#####";


$val1=$_POST['value1'];
$val2=$_POST['value2'];
$val3=$_POST['value3'];
$val4=$_POST['value4'];
$val5=$_POST['value5'];

$con = new mysqli($server,$username,$password,$database);
//Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql= "INSERT INTO test_table (value1, value2, value3, value4, value5)     VALUES ('$val1','$val2','$val3','$val4','$val5')";

if (mysqli_query($con, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}

mysqli_close($con);

?>

这两种形式似乎工作正常,没有弹出任何错误。问题是,当我切换到 mysql 提示符并询问数据库以查看它是否工作时,它显示多个条目行而不是只有一个。 我非常有信心这个问题与之前创建的数据库表无关。以防万一我发布了我用来创建表格的代码。

mysql> create table test_table (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
                            value1 VARCHAR(10),
                            value2 VARCHAR(10),
                            value3 VARCHAR(10),
                            value4 VARCHAR(10),
                            value5 VARCHAR(10))
                            ;

因此,例如,如果我加载 html 表单并在字段中插入“a”、“b”、“c”、“d”和“e”,则输出在 mysql 中应该只有 1 条记录。相反,我得到了两个。(我无法发布输出图片,因为我没有足够的经验值)。我一直在努力解决这个问题,但找不到问题出在哪里。 非常感谢任何帮助。

最佳答案

您的代码中没有任何内容会产生重复。如您所知,一种形式,如果由您的 PHP 代码处理一次,将只在数据库中生成一行,因此您要么发布到一个文件,然后导入另一个处理该形式不止一次的文件,要么您正在进行一些奇怪的重定向。

对于要注册两次(两行)的“a”、“b”、“c”、“d”和“e”,表单内容被发送到该 PHP 两次。 首先,尝试确定您是否只提交一次: - 在 firefox 中安装 Live HTTP Headers,捕获 POST 并查看它是否只运行一次; 您是否使用 jquery 来验证或处理表单提交?如果是这样,您是否阻止了正常事件的发生?否则,您可能会两次发布数据,一次通过 ajax,另一次通过普通浏览器发布。

关于php - 为什么 PHP 从一个数据条目向 MySQL 插入多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29200931/

相关文章:

php - Zend Framework 多数据库停止使用慢速查询

php - 存储客户付款详细信息 - PCI 合规性

php - 当成员(member)订阅到期时,WordPress 用户的角色设置为 "no role for this site"

mysql - 计算另一个表中存在的值并旋转结果

database - 在 Cassandra 中写入非常慢

php - 如何保护只有员工才能访问我的公司网站

php - DQL 关联和 lat lon 距离

php - 将复选框更新到 mysql 数据库

MySQL:如何分割由管道和分号分隔的长文本

PHP mySQL xampp fatal error