Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Doppelte Einträge verhindern - sql

wlaner / 3 Antworten / Baumansicht Nickles

Hi!
Hab mit PHP und MySQL angefangen aber stehe grad vor nem Problem.
Und zwar soll bei einer Userregistrierung überprüft werden, ob der Name schon in der Datenbank steht(evtl. später auch Email, was sich aber leicht ergänzen lässt, wenn das Problem gelöst ist)
und wenn der Eintrag schon vorhanden ist, eine Warnung kommt.
So sieht mein Ansatz aus(kann auch falsch sein):
  ...
  $sql="SELECT username FROM daten WHERE username='username'";
  if($sql > 0) {
  echo "Den Namen gibt es schon!";
  }
  else {//daten eintragen
  ...
Das Eintragen funktioniert soweit schon allerdings kann man eben Namen mehrfach registrieren.
Ich bin mir auch nicht sicher, ob $sql 1 zugewiesen wird, wenn der Name gefunden wird, aber ich hoffe ihr könnt mir da helfen.
WL

bei Antwort benachrichtigen
d-oli wlaner „Doppelte Einträge verhindern - sql“
Optionen

Hi

Wenn der Benutzername in einer Tablle nur einmal vorkommen darf, dann solltest du ihn als Primary Key (Primärschlüssel) definieren. Das wäre eine typische Aufgabe einer Datenbank.

Ich bin mir auch nicht sicher, ob $sql 1 zugewiesen wird, wenn der Name gefunden wird, aber ich hoffe ihr könnt mir da helfen.
Probiere es doch einfach mal. Ich bin kein PHP spezialist, aber so ähnlich würde ich es auch versuchen.
Oder wie wäre es mit :

$sql="SELECT username FROM daten WHERE username='username'";
echo $sql

Nur zum sehen was es ausgibt.

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
wlaner d-oli „Hi Wenn der Benutzername in einer Tablle nur einmal vorkommen darf, dann...“
Optionen

Hi,
So siehts aus:

$sql="SELECT username FROM daten WHERE username='username'";
echo "Das ist $sql";

gibt Das ist SELECT username FROM daten WHERE username='username' aus. =)
Da fehlt sowieso schonmal das Dollar Zeichen.

Aber damit scheints zu gehen:
(Durch zufall in einem anderem Skript und durch google gefunden....)

 $sql="SELECT username FROM daten WHERE username='$username'";
 $res=mysql_query ($sql);
 $num=mysql_num_rows($res);
 echo "das ist $num";

Wenn der Name existiert wird 1 ausgegeben, wenn nicht 0.
Edit:
...dann solltest du ihn als Primary Key (Primärschlüssel) definieren...
Stimmt, aber ich glaube dann kann ich nicht so 'leicht' eine Fehlermeldung für den Benutzer ausgeben. Werd ich aber mal ausprobieren.

Trotzdem danke für die schnelle Antwort!
MfG WL

[Diese Nachricht wurde nachträglich bearbeitet.]

bei Antwort benachrichtigen
Hanussen wlaner „Hi, So siehts aus: sql SELECT username FROM daten WHERE username username echo...“
Optionen

Das Attribut für die Spalte ist nicht Primary Key sondern "UNIQUE".

Und wie oben schon geschrieben musst du mit $num=mysql_num_rows($res); die Anzahl der Ergebnisse überprüfen.

MfG Hanussen

bei Antwort benachrichtigen