阻止MySQL中的多个数据项

所以这里是交易。 我环顾四周,其他所有技术都涉及到刷新浏览器,以及防止php页面重新提交发布数据的方法。 我对此很陌生(显然:p)但无论如何,我认为我的问题很简单。 我只想要一个方法,可能是一个if语句来检查发布数据条目,并且如果我的表中已经存在匹配,那么不要执行查询。 我并不担心查询桌子的所有结果,因为我只怀疑这张桌子有50-60个参赛作品。

这里是处理表单提交的php页面:

$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$city = $_POST['city'];
$state = $_POST['state'];

$submitDate = date("Y-m-d");

mysql_connect ("localhost", "abc", "123") or die ('Error: ' . mysql_error());
mysql_select_db ("members");

$query = "INSERT INTO persons (ID, firstName, lastName, email, city, state, submitDate)VALUES (
'NULL',
'".$firstName."',
'".$lastName."',
'".$email."',
'".$city."',
'".$state."',
'".$submitDate."'
)";

mysql_query($query) or die ('Error Updating database');

echo "Database Updated With: " .$firstName ." " .$lastName ." " .$email ." " .$city ." " .$state; 

mysql_close($con);

对不起,似乎无法让我的PHP格式与这些代码大括号正确。 无论如何。 只是为了重新迭代,寻找一种可能基于名字和姓氏的方式。 如果这些数据已经存在,则不允许提交数据。 我已经尝试了一些,如果然后声明,但我不认为我得到的概念比较结果与我的查询。 我希望这一切都有道理!


您可以使用INSERT IGNORE INTO ...并让MySQL处理它。

$query = "INSERT IGNORE INTO persons (ID, firstName, lastName, email, city, state, submitDate) VALUES (
'NULL',
'".$firstName."',
'".$lastName."',
'".$email."',
'".$city."',
'".$state."',
'".$submitDate."'
)";

我会建议在你想要唯一的列上添加一个UNIQUE索引。


我也有这个问题。 基本上我所做的是在插入之前,对符合条件的条件做一个选择并检查它是否返回; 如果不是,我们可以进入。

$query = "SELECT COUNT(id) AS mycount FROM persons WHERE firstName = '".$firstnName."' AND lastName = '".$lastName."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if($row['mycount'] == 0) {
    //Do insert
}
链接地址: http://www.djcxy.com/p/93673.html

上一篇: Prevent multiple data entries in MySQL

下一篇: Preventing SQL injections.