Dieses Problem nicht in PHP gelöst werden soll weil es ein Problem mit dem Datenbankdesign ist. Stattdessen möchten Sie Ihre UserDetail
Tabelle so ändern, dass die Datenbank jede Abfrage ablehnt, die versucht, ein Duplikat einzufügen. Dies ist die Abfrage, die Sie ausführen:
$sql = 'ALTER TABLE UserDetail ADD UNIQUE INDEX (`Username`)';
$result = $conn->query($sql);
if($result) echo 'Success!';
else echo $conn->error;
Sobald Sie dies erfolgreich getan haben, ist es nicht möglich sein wird, einen doppelten Username
Wert in dieser Tabelle eingeben; Die Abfrage wird nicht ausgeführt und erzeugt einen Fehler.
$sql = "INSERT IGNORE INTO UserDetail SET Username='$escaped_new_username'";
$result = $conn->query($sql);
Durch die Art und Weise Ihr Code schlägt fehl, da Sie das Echo sind versuchen:
Jetzt Fehler zu vermeiden, wenn das Skript einen Benutzernamen, der bereits vorhanden einzufügen versucht, Ihre INSERT-Abfrage INSERT
-INSERT IGNORE
ändern Ergebnis von $conn->query
, aber es ist keine Zeichenfolge. Die Schritte zur DB Ergebnisse zeigen, sind:
- Führen Sie die Abfrage (Sie haben)
- Stellen Sie sicher, dass kein Fehler durch Prüfen, dass das Ergebnis Ergebnisse nicht
false
- Fetch von
fetch
fetch_assoc
, fetch_array
Ausführung oder einige solche Methode auf das Ergebnis
Verwenden Sie oder zeigen Sie, was Sie abgerufen haben.
Sehen Sie in der Dokumentation des von Ihnen verwendeten DB-Treibers nach. Die häufigsten sind MySQLi und PDO_MySQL
Mögliche Duplikat [Wie 'einfügen, wenn nicht vorhanden ist' in MySQL?] (Http://stackoverflow.com/questions/1361340/how-to-insert-if- not-exists-in-mysql) – revo