Hallo,
Konkret geht es um eine MySQL Datenbank, die Daten über ein PHP Skript bekommt. Um z.B. zu verhindern, dass Benutzernamen doppelt vorkommen können, soll bei bereits vorhandenem Wert in Spalte "Name" eine entsprechende Meldung generiert werden. Dafür habe ich 2 Ansätze:
1.
Mittels "SELECT COUNT(*) FROM tabelle WHERE Name == ".$_POST['name'].";" ermitteln, ob der Wert schon vorkommt. Wenn das Ergebniss grösser 0 ist, dann nicht speichern und Fehlermeldung "Doppelter Wert" ausgeben.
2.
Bei der Erstellung der Tabelle die Spalte Name als UNIQUE angeben:
CREATE TABLE IF NOT EXISTS tabellenname (
ID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100) UNIQUE,
...
);
Wenn dann über INSERT ein vorhandener Wert gespeichert werden soll, wird ein Fehler mit der Nummer 1062 zurückgegeben. Den kann man mit errno() abfragen und wenn $errno == 1062, dann Fehlermeldung "Doppelter Wert" ausgeben. Gespeichert wird dann ja sowieso nicht.
Das zu programmieren wäre kein Problem, ich frage mich nur für welche Lösung ich mich entscheiden soll.
Ich würde vermuten Lösung 2 wäre bei besonders bei grossen Datenmengen performanter? Wie steht es mit der Kompatibilität zu verschiedenen MySQL Versionen?
Welche Lösung würdet Ihr aus welchem Grund bevorzugen?
netten Tag
^da Powl