2015-12-31 9 views
9

wie für doppelten Eintrag in einem Formular mit PHP überprüfen? Mein Frontend ist C# Windows-Anwendungdoppelte Eintrag auf Datenbank mit PHP

mir eine neuen Benutzer-Datenbank mit C# und PHP-Datei hinzugefügt wird.

Ich habe folgendes erstellt:

mein Projekt in C# (form1):

C# Codierung:

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; 
} 

meine PHP-Datei: 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(); 
?> 

es Daten erfolgreich hinzufügen, aber wenn ich die gleiche Benutzer-ID in Textfeld eingeben und klicken Sie auf Erstellen, muss ich eine Fehlermeldung in txtmessage erhalten, da Benutzer-ID bereits existiert.

suche ich durch googeln, aber ich habe es noch keine Sache über doppelten Eintrag verweisen Sie mir bitte einige Codierung

+2

In den meisten Fällen Benutzer-ID-Feld ist ein eindeutiger Schlüssel und wenn es wiederholt wird, wird die Mysql einen Fehler zurückgeben. Um dies zu vermeiden, versuchen Sie zunächst, alle Datensätze mit der Benutzer-ID abzurufen, die Sie einfügen möchten. Wenn Sie als Ergebnis 0 erhalten, sind Sie bereit. Es gibt kein Duplikat. Andernfalls geben Sie einen benutzerlesbaren Fehler zurück und führen die Einfügeabfrage nicht aus. – JTheDev

+1

@JTheDev Vielen Dank für Ihren wertvollen Befehl – Arthi

+0

Gern geschehen ... – JTheDev

Antwort

3

Sie Ihre response.php verlängern könnte eine select-Anweisung vor dem insert zu tun. Wenn Sie einen Datensatz mit der angegebenen ID auswählen können, geben Sie eine Antwort (im Wesentlichen einen Fehlercode) ab, die Ihre C# -Anwendung dann interpretiert und dem Benutzer anzeigt.

Als Nebenbemerkung, da das ID-Feld numerisch zu sein scheint, können Sie es einfach aus Ihrem Formular weglassen und lassen Sie die Datenbank automatisch inkrementieren. Dies würde auch bedeuten, dass der Benutzer nicht erraten muss, welche ID-Werte verfügbar sind.

3

Sie möchten nur, dass die ID, die Sie eingegeben haben, nicht beim nächsten Mal eingefügt werden soll. Dafür musst du nur eine Sache machen. Wenn Sie Ihre ID als Primärschlüssel für die Erstellung Ihrer Datenbanktabelle festlegen, können Sie diese ID nach dieser Aktion nicht erneut eingeben, da doppelte Einträge in einem Primärschlüssel nicht zulässig sind.

Lemme wissen, ob es nützlich ist.

2

Es kann nicht so viel helfen, aber ich denke, meine Erklärung wird Sie in die richtige Richtung weisen.

Was ich tun würde, ist:

  1. ich SQL-Abfrage verwenden würde zu überprüfen, ob Datensatz vorhanden ist und wenn vorhanden dann drucken „Record exists“ Else „Record existiert nicht“. Unter dem Code, den ich, Justin Yen 'auf PHP gepostet habe, um ein Zitat zu veröffentlichen, stelle sicher, dass du dies dem Feld der Eingabe des Benutzernamens zuordnest. In deinem Fall ist es $ uid.
  2. In PHP, das Ergebnis der SQL-Abfrage auf eine Variable zuweisen.
  3. Erstellen Sie eine String-Variable "Datensatz existiert" und "Datensatz existiert nicht".
  4. Vergleichen Sie die String-Variable, die Sie in Schritt 3 erstellen, mit dem Ergebnis in Schritt 2.
  5. Ich kenne keine PHP-Codierung, aber Sie können versuchen, einen Weg zu finden, Zeichenfolge zu vergleichen.Aber hier ist ein Beispiel Aufzeichnung der Überprüfung in SQL existieren:

    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. Alles was Sie jetzt tun müssen, ist, wenn die Variable Spiel dann prompt „Aufnahme nicht erstellt werden, weil Bilanz erstellt.“ Verwenden Sie sonst die add record Codes, die Sie in PHP haben.

2

Sie können einfach versuchen, die contraints hinzufügen (UNIQUE/PRIMARY) in die Spalte 'Benutzer-ID'.

Verwandte Themen