我想防止重复值从使用PHP的表单到数据库表中。
我在数据库中有一个表数据,这些数据具有属性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已经存在,如何防止将数据插入数据库?
最佳答案
解决您的问题的方法是使列唯一,以便数据库负责实施此约束。您可以通过创建唯一索引或约束来做到这一点:
alter table data add constraint unq_data_data1 unique (data1);
然后,可以使用
insert
在on duplicate key update
中使用此命令来忽略重复项:INSERT INTO data(data1, data2)
VALUES('$_POST[data1]', '$_POST[data2]')
ON DUPLICATE KEY UPDATE data1 = VALUES(data1);
ON DUPLICATE KEY
部分实际上没有任何作用。这是没有操作的。另外,您应该参数化查询,这样就不必进行SQL注入,因此可以缓存查询计划。但这是另一回事。
关于php - 如果特定属性已经存在,则防止将数据插入数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37528763/