使用php在数据库中复制条目

本文关键字:复制 数据库 php 使用 | 更新日期: 2023-09-27 18:28:37

如何使用php检查表单上的重复条目?我的前端是c#windows应用程序

我正在使用c#和php文件向数据库添加一个新用户。

我创建了以下内容:

我在c#中的项目(form1):

c#编码:

  private void btncreate_Click(object sender, EventArgs e)
  {
 var request = (HttpWebRequest)WebRequest.Create("http://***.**.***.***/response.php");
            request.Method = WebRequestMethods.Http.Post;
            request.ContentType = "application/x-www-form-urlencoded";
            using (var stream = request.GetRequestStream())
            {
                var buffer = Encoding.UTF8.GetBytes("userid= " + txtUserid.Text + " & password=" + txtConformpassword.Text + " & first_name=" + txtFirstname.Text + " & last_name=" + txtLastName.Text + "& role= " + cmbRole.Text + "& active=" + cmbActive.Text + "");
                stream.Write(buffer, 0, buffer.Length);
            }
            var response = (HttpWebResponse)request.GetResponse();
            string result = String.Empty;
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                result = reader.ReadToEnd();
            }
            txtMessage.Text = result; 
}

我的PHP文件:response.PHP

<?php    
$uid = $_POST['userid'];   
$pass = $_POST['password'];   
$fname = $_POST['first_name'];   
$lname = $_POST['last_name'];   
$rol = $_POST['role'];
$act = $_POST['active'];
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
   $sql= "INSERT INTO aster(userid,password,first_name,last_name,role,active)
VALUES('$uid', '$pass', '$fname','$lname','$rol','$act');";
     if ($conn->query($sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

它成功地添加了数据,但当我在文本框中输入相同的用户ID并单击创建按钮时,我需要在txtmessage中获得一条错误消息,因为用户ID已经存在

我在谷歌上搜索,但我没有得到任何关于重复条目的信息,请给我一些编码

使用php在数据库中复制条目

您可以扩展response.php以在insert之前执行select语句。如果您能够选择具有给定ID的记录,那么就会产生一个响应(本质上是一个错误代码),然后您的C#应用程序将对其进行解释并向用户显示。

附带说明一下,由于ID字段看起来是数字字段,您可以简单地从表单中省略它,并让DB自动递增它。这也意味着用户将不必猜测哪些ID值是可用的。

您只希望下次不插入您输入的ID。为此,你只需要做一件事。在创建数据库表时,将您的id作为主键,这样做之后,您将无法再次插入该id,或者主键中不允许重复条目。

让我知道它是否有用。

这可能没有多大帮助,但我认为我的解释会为您指明正确的方向。

我会做的是:

  1. 我会使用SQL查询来检查记录是否存在,如果存在,则打印"记录存在",否则打印"记录不存在"。在我发布的代码下面,"Justin Yen"在PHP上发布了一个报价,请确保将其分配给输入用户名的字段。在您的情况下,它是$uid
  2. 在PHP上,将sql查询的结果分配给一个变量
  3. 创建一个字符串变量"记录存在"answers"记录不存在"
  4. 将步骤3中创建的字符串变量与步骤2的结果进行比较
  5. 我不知道任何PHP编码,但您可以尝试找到一种比较字符串的方法。但这里有一个检查SQL中是否存在记录的例子:

    Declare @Username varchar(MAX) = 'Justin Yen'
    IF EXISTS(select Username from EmployeTable where Username = @Username)
    begin print 'Record Exists' end
    else
    begin print 'Record does not exist' end
    
  6. 现在,您所要做的就是如果变量匹配,则提示"Cannot create record because record created"。否则,请使用php中的添加记录代码。

您可以简单地尝试将约束(UNIQUE/PRIMARY)添加到列"userid"中。

ALTER TABLE aster ADD CONSTRAINT MyUniqueKey UNIQUE KEY(userid)