我有一个html页面,我在其中输入数据,然后提交并插入到php页面上的数据库中。我将如何在php中验证收到的数据是否与数据库中的数据重复?
任何帮助表示感谢。
答案 0 :(得分:3)
假设您要检查输入的用户名是否已存在。您可以使用通常的SELECT查询来执行此操作:
$name = mysql_real_escape_string($_POST['name']);
$sql = "SELECT * FROM table WHERE name = '$name'";
$res = mysql_query($query, $connection);
if (mysql_num_rows($res) > 0 ) $error = "User already exists.";
将表单放在php文件中,而不是html文件中也是个好主意。因此,您将能够显示所有填写了输入数据的字段 - 非常好的可用性改进
答案 1 :(得分:1)
您需要使用数据查询数据库,并查看是否返回任何结果。如果是,那么你知道它是重复的。例如:
$data = validate($_POST['data']);
$query = "select * from `tablename` where `fieldname` = $data limit 1;";
$result = mysql_query($query, $connection);
//now check that the number of rows is 0
if (mysql_num_rows($result) == 0 ) {
//insert the data
insert($data);
}
答案 2 :(得分:1)
这取决于具体情况。如果您的数据库有主键,唯一约束等,那么数据库就不会插入数据,您可以尝试捕获任何错误。否则,您必须根据用户的信息查询数据,并将其新信息与旧信息进行比较。
如果您只是想避免表单中出现双重提交问题,请执行Redirect after POST
答案 3 :(得分:0)
最简单的方法是使用隐藏的字段ID保存表中主键的值。如果为空,这将自动意味着数据是新的并且需要插入。否则,这取决于您的具体情况,如果您提供更多详细信息,我可以尝试给您更详细的回复。
答案 4 :(得分:0)
以下是带有表单及其处理程序的页面架构:
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
//validation part
$err='';
if (!$name) $err.="You must enter name<br>";
$name = mysql_real_escape_string($_POST['name']);
$sql = "SELECT * FROM table WHERE name = '$name'";
$res = mysql_query($query, $connection);
if (mysql_num_rows($res) > 0 ) $err. = "User already exists.";
// etc
// check if there was no errors:
if (!$err) {
//save to the database
mysql-query(...);
//and redirect
Header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
foreach($_POST as $key => $value) $_POST[$key] = htmlspecialchars($value);
}
} else {
$_POST['name'] = $_POST['email'] = $_POST['notes'] ='';
}
//here goes the form, with error message, if any.
?>
<html>
<head></head>
<body>
<? if ($err) echo '<font color=red><b>'.$err.'</b></font>'; ?>
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="POST"><br>
Name: <input type="text" name="name" value="<? echo $_POST['name'] ?>"><br>
Email: <input type="text" name="email" value="<? echo $_POST['email'] ?>"><br>
Notes: <textarea rows="3" cols="30" name="notes"><? echo $_POST['notes'] ?></textarea><br>
<input type="submit" name="submit">
</form>
</body>
</html>