当前位置: 首页 > 知识库问答 >
问题:

使用PHP防止重复记录到表[重复]

元修然
2023-03-14

我想防止重复的值进入数据库表从一个使用PHP的表单。

具有名为clients的表的数据库:

CREATE TABLE clients(
 firstName varchar(20),
 lastName varchar(20),
 primary key(firstName, lastName));

一个名为form的简单表单。html

<h2>Enter your First and Last Name</h2>
<form action="frm_script.php" method="post">
<p><strong>First Name:</strong><br /> <input type="text" name="firstName" /></p>
<p><strong>Last Name:</strong><br /> <input type="text" name="lastName"/></p>
<input type="submit" name="submit" value="Add Customer" />
</form>

名为frm_脚本的表单处理脚本。php

<?php
if(isset($_POST['submit']))
{

//get the name and comment entered by user
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];

//connect to the database
$dbc = mysqli_connect('host', 'username', 'password', 'dbname') or die('Error connecting to MySQL server');

//insert results from the form input
$query = "INSERT IGNORE INTO clients(firstName, lastName) VALUES('$firstName', '$lastName')";

$result = mysqli_query($dbc, $query) or die('Error querying database.');

mysqli_close($dbc);
}
echo "Customer Added";
?>

到目前为止,我的frm_脚本。php文件,上面的作品和一个独特的记录显示客户添加。然而,对于重复记录,它抛出“错误查询数据库”。

如何更新以下frm_script.php脚本?

如果在输入名/姓组合时发现重复行,则应显示消息“Client ready listed”(客户已列出)以及该记录。

如果在表单上输入名/姓组合时未发现重复行,则应将该条目插入数据库并显示消息“customer added”(客户已添加)

我读到一个SELECT应该首先运行然后插入,但我不知道如何实现这到我现有的代码。

共有3个答案

长孙嘉
2023-03-14

处理$_POST数据后,使用SELECT查询,后跟if语句,检查表中是否有与$_POST 名字和姓氏数据。

如果有,显示一条消息,说明此数据已经插入。

如果没有,请使用INSERT查询将此数据添加到数据库表中,并显示此数据已添加到表中的消息。

南门烈
2023-03-14

因为主键是(firstName, lastName),所以不需要php来防止插入重复的值。Mysql可以为您做到这一点,因为主键必须是唯一的。
(如果它不是您的主键,您可以使用唯一约束)

要在重复条目上显示错误消息“Client ready listed”,可以使用mysqli\u errno($dbc)并检查错误代码1062快速修复程序,可以执行您想要的操作:替换或死亡('Error querying database') 带有
或die(mysqli_errno($dbc)==1062?“已列出客户端”:“查询数据库时出错”)

姬实
2023-03-14
  <?php
    if(isset($_POST['submit'])) {

    //get the name and comment entered by user
    $firstName = $_POST['firstName'];
    $lastName = $_POST['lastName'];

    //connect to the database
    $dbc = mysqli_connect('host', 'username', 'password', 'dbname') or die('Error connecting to MySQL server');
    $check=mysqli_query($dbc,"select * from clients where firstname='$firstname' and lastname='$lastname'");
    $checkrows=mysqli_num_rows($check);

   if($checkrows>0) {
      echo "customer exists";
   } else {  
    //insert results from the form input
      $query = "INSERT IGNORE INTO clients(firstName, lastName) VALUES('$firstName', '$lastName')";

      $result = mysqli_query($dbc, $query) or die('Error querying database.');

      mysqli_close($dbc);
    }
    echo "Customer Added";
    };
  ?>

只要检查你的db中的行是否有第一个名字和最后一个名字,如果存在回声-你的消息其他插入

 类似资料:
  • 本文向大家介绍防止mysql重复插入记录的方法,包括了防止mysql重复插入记录的方法的使用技巧和注意事项,需要的朋友参考一下 防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免

  • 本文向大家介绍php通过记录IP来防止表单重复提交方法分析,包括了php通过记录IP来防止表单重复提交方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了php通过记录IP来防止表单重复提交方法。分享给大家供大家参考。具体分析如下: 这个原理比较的简单就是用户第一次提交时我们记录提交用户的IP地址,这样如果用户在固定时间内再次提交表单就会提示重复提交了,这种做法通常用于在顶一下,支持一

  • 这是我的用户注册数据库的方式,但我的问题是:如何防止数据库具有相同用户名的副本,或者换句话说,如果用户名存在于数据库。

  • 问题内容: 我想创建一个表来存储设备设置。该表具有三行:id,parameter_name和parameter_value。 该表是通过执行以下查询语句创建的: 然后通过执行以下方法存储行: 创建数据库后,将存储默认值: 但是,方法insertRow()的问题在于它无法防止重复输入。 有谁知道在这种情况下如何防止重复输入? 问题答案: 您可以使用列约束。 UNIQUE约束导致在指定列上创建唯一索引

  • 问题内容: 这个问题已经在这里有了答案 : 如何防止PHP中进行SQL注入? (28个答案) 7年前关闭。 我已经建立了一个网站,该网站即将上线,并且有几个关于防止SQL注入的问题,我知道如何使用,但是我只是想知道是否必须在要获取的所有变量上使用它SQL语句,是否在执行select语句时还是在插入更新和删除时必须使用它?另外,在我将网站投入使用之前,您还建议我实施哪些其他安全措施,在此先感谢您的帮

  • 问题内容: 我想提出一种标准做法,以防止任何表在重要的地方重复。在大多数情况下,重复项是变量的组合而不是一个。我的主键只是每个字段的唯一ID,因此我无法使用它们。我一直在做的是先查询表,然后查询所要组合的行数是否为0,然后进行插入。但是,我已经读过,应该有可能在多个字段上设置唯一键以强制唯一性。INSERT IGNORE听起来很可能,但是,我需要在多个列上忽略它。 例如,对于字段关注者和关注对象,