【发布时间】:2016-09-28 11:11:39
【问题描述】:
我想防止使用 PHP 将重复值从表单中复制到数据库表中。
我在数据库上有一个表 data,它具有属性 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 已存在,则防止向数据库插入数据?
【问题讨论】:
-
您可以在数据库中创建列
unique -
如果他将其设为唯一并尝试按照所写的方式运行查询,则会出错。现在,也许这没问题,但更好的处理方法是不仅使列唯一,而且检查表中是否存在 data1,如果不存在,则运行插入查询。
-
或者您可以按照火影忍者的建议进行操作,也可以使用未弃用的 mysql api 并将您的插入内容包装在 try/catch 块中。这样你就不需要做两次查询了。
-
您好,感谢您的 cmets。你能给我代码怎么做吗?
-
@P.Gearman 如果出错,您只需捕获错误并处理它......就像迈克说的那样