如何确保输入的输入是唯一的?

时间:2015-03-04 15:18:14

标签: php html5 submit

我有一个在数据库中提交的简单表单。其中一个字段必须是唯一的(因此我已将其相应的列声明为唯一)。它工作正常,不会发布任何重复的值。到现在为止还挺好。 但我也想添加一条消息(就像我尝试将数值提交到非数字字段等时)。此消息将告诉用户该值已存在。在这里,我发布了从w3schools拍摄的截图。这是我想要使用的格式:

enter image description here

我可以在submit.php文件中添加一些行,这些行搜索该值是否已存在。但是,我如何显示该消息? (由于验证是服务器端,而消息显示在客户端)?

在Jordy的请求之后,我发布了一个代码。即使是标准的。

html文件:

<form action="add_classroom.php" method="post">
        Name: <input type="number" placeholder="Name" name="classroom_id" required>
</form>

php code(add_classroom.php):

$result = pg_query(connect(), "SELECT COUNT(1) FROM classroom WHERE classroom_id = '$_POST[classroom_id]'");
$count = pg_fetch_all($result);
//if it exists, do sth (havent figured out what yet)
if($count[0]['count'] == 1){
    $result = pg_query(connect(), "INSERT INTO classroom VALUES ('$_POST[classroom_id]', '$_POST[building]', '$_POST[floor]', '$_POST[capacity]')");
}

else    $result = pg_query(connect(), "INSERT INTO classroom VALUES ('$_POST[classroom_id]')");

在表声明中,classroom_id被声明为唯一。这会阻止插入现有数据。所以不需要照顾那部分。

2 个答案:

答案 0 :(得分:2)

您必须查询数据库以查看该值是否存在,或者您可以执行的操作是检查查询返回的行,如果其中的1(表示插入了某些内容),您知道该值是唯一的,如果它返回0,则表示该名称已被使用。

如果您想“现场”显示该值已经在使用中,您必须查看AJAX。

答案 1 :(得分:0)

在尝试插入数据之前,请检查它是否存在,并回显该响应。否则,插入数据。

例如,使用Mysqli

// Store '1' if already exists
$stmt = $db->prepare("SELECT 1 FROM mytable WHERE field = ?");
$stmt->bind_param('s',$value);
$stmt->execute();
$stmt->bind_result($exists);
$stmt->fetch();
$stmt->close();

if($exists){
   echo 'Already exists';
}
else
{
  // insert the data
}