当前位置: 首页 > 知识库问答 >
问题:

如果已经存在特定的属性,则防止向数据库插入数据

邹英悟
2023-03-14

我想防止使用PHP将值从表单复制到数据库表中。

我在数据库中有一个表数据,它有一个atribute dataid(自动递增为主键)、data1、data2。

我有一个像这样的简单表格

<h2>Enter your data</h2>
<form action="script.php" method="post">
    Data 1:<input type="text" name="data1" /></p>
    Data 2:<textarea name="data2"></textarea></p>
    <input type="submit" name="submit" value="Add Data" />
</form>

它script.php插入数据到数据库

<?php
    if(isset($_POST['submit']))
    {
        //connect to the database
        $conn = mysql_connect('host', 'username', 'password', 'dbname') or die(mysql_error());

        //insert results from the form input
        $query = "INSERT INTO data(data1, data2) VALUES('$_POST[data1]', '$_POST[data2]')";

        $result = mysql_query($conn, $query) or die(mysql_error());
    }
?>

但它会将表单中的任何数据插入数据库。如果data1已经存在,如何防止向数据库插入数据?

共有2个答案

郭永安
2023-03-14

使列数据1唯一

ALTER TABLE `data` ADD UNIQUE (`data1`);

将查询更改为在数据存在时忽略insert

$query = "INSERT IGNORE INTO data(data1, data2) VALUES('$_POST[data1]', '$_POST[data2]')";
邵和硕
2023-03-14

问题的解决方案是使列唯一,以便数据库负责执行此约束。可以通过创建唯一索引或约束来执行此操作:

alter table data add constraint unq_data_data1 unique (data1);

然后,您可以在插入中使用此选项,通过在重复密钥更新中使用忽略重复项

INSERT INTO data(data1, data2)
    VALUES('$_POST[data1]', '$_POST[data2]')
    ON DUPLICATE KEY UPDATE data1 = VALUES(data1);

ON DUPLICATE KEY部分实际上不做任何事情。这是一个没有行动。

此外,您应该参数化查询,这样您就不必接受SQL注入,并且可以缓存查询计划。但那是另一回事。

 类似资料:
  • 问题内容: 我只是想将数据插入到SQL数据库表中,如果已经插入了一些数据,那么我想更新该数据。如何使用Java做到这一点。请帮助我,并提前对英语不好表示抱歉。 问题答案: 只需标识数据集中的 唯一项即可 (例如 ID 或 代码 )。然后通过使用该方法首先尝试执行 SELECT 查询。如果 结果集 是空的,执行 INSERT 别的尝试 UPDATE 细节。

  • 问题内容: 我想初始化一个H2数据库,但是我不确定记录是否存在。如果它们不存在,我什么都不愿做,但是如果它们不存在,我想写默认值。 像这样的东西: 问题答案: 以下内容适用于MySQL,PostgreSQL和H2数据库:

  • 我正在尝试对可能存在属性的对象进行查询。但是我在获取

  • 问题内容: 我想防止使用vb.net和MySQL作为数据库的清单表单中出现重复条目​​,这是我的代码: 结束子 我在搜索答案时发现了这个问题,但是当我尝试运行它时,它没有读取插入命令,而是即使没有相同的人员ID也会直接转到msbox“人员ID已经存在”。 有人可以检查为什么不阅读插入内容, 我的数据库表值: pcode =主键 lname =长文本 fname =长文本 办公室=长文本 名称=长文

  • 我想从dto对象中设置值,并使用save jpa repository方法将其插入数据库。如果属性无效(null或大小过长),我可以使用jpa插入默认值吗? dto对象: 我使用验证器来控制值:

  • 我有两个SQL Server数据库A和B 它们都包含一个名为的表,其中包含、、 我想编写一个脚本,将从数据库a插入数据库B(如果基于他们还不存在) 所以基本上我需要SQL脚本中的这个: 非常感谢你的帮助