我想防止使用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已经存在,如何防止向数据库插入数据?
使列数据1唯一
ALTER TABLE `data` ADD UNIQUE (`data1`);
将查询更改为在数据存在时忽略insert
$query = "INSERT IGNORE INTO data(data1, data2) VALUES('$_POST[data1]', '$_POST[data2]')";
问题的解决方案是使列唯一,以便数据库负责执行此约束。可以通过创建唯一索引或约束来执行此操作:
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脚本中的这个: 非常感谢你的帮助