php表单输入验证

时间:2010-04-06 17:35:21

标签: php mysql database validation

我有一个html页面,我在其中输入数据,然后提交并插入到php页面上的数据库中。我将如何在php中验证收到的数据是否与数据库中的数据重复?

任何帮助表示感谢。

5 个答案:

答案 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>