Registrierung: Mehrfachprüfung möglich?

bomberpilotmp3

Erfahrenes Mitglied
Hallo und Guten abend,

ich habe da mal eine kleine Frage. Sie ist nicht aufregend, nur irgendwie muss ich bei MySQL geschlafen haben ;)

Ich habe in PHP eine Normale Registrierung mit ein paar If-Abfragen. Nun die If-Abfragen prüfen jedenfalls die Eingaben des Benutzers auf korrekte Syntax und andere Eigenschaften.

Nun habe ich all den zwischen Prüfungen der if-Abfragen noch 2 Abfragen drinnen, die aus der Datenbank abgefragt werden sollen. Zb. Er soll prüfen ob der Username existiert.

Das mache ich zb so:
PHP:
$ausgeben = mysql_fetch_array(mysql_query('SELECT * FROM BILLING_USER WHERE USER_USERNAME = "'.mysql_real_escape_string($_REQUEST['user_username']).'"'));
} elseif (!$ausgeben['USER_USERNAME'] != $_POST['user_username']) {
            $SYSTEM_MESSAGE[1] = 'Dieser Username ist bereits von einem anderen User verwendet worden und befindet sich bei uns in der Datenbank!<br />';

Soweit so gut, nur ich habe 2 Einträge zu prüfen. Username und E-Mail Adresse. Das mache ich wie gerade im obrigen Beispiel auch gerade. Nur das eigendliche Problem dabei ist, wie kann ich mysql_query() schreiben, der unabhängig Username und E-Mail Adresse prüft?

So zb.:

PHP:
$ausgeben = mysql_fetch_array(mysql_query('SELECT * FROM BILLING_USER WHERE USER_USERNAME = "'.mysql_real_escape_string($_REQUEST['user_username']).'" OR USER_EMAIL = "'.mysql_real_escape_string($_REQUEST['user_email']).'"'));

So ähnlich meine ich das. So wie es hier oben steht, funktioniert es natürlich nicht. Das war nur ein Beispiel. Ich müsste jedesmal bei dem Feld was im Zusammenhang mit der Datenbank geprüft werden soll, solch ein mysql_query() mit den Unterschiedlichen Überprüfungen bauen.

Wie nun, mache ich es so, das ich nur eine MySQL Abfrage mache?


Gruß Michael
 
Statt direkt den Inhalt zu vergleichen, benutze doch einfach [phpf]mysql_num_rows[/phpf].

PHP:
$sql = "SELECT `id` FROM user WHERE email = 'bla@bla.de' OR username = 'foobar'";
$query = mysql_query($sql);

if(mysql_num_rows($query) > 0)
{
  echo 'Username oder E-Mail bereits in Verwendung';
}
else
{
  # Insert
}
 
Hallo, ich muss das Thema noch mal anfangen. Es funktioniert leider doch nicht so, wie es soll. Hat jemand noich eine simplere Lösung parat?
 
Hallo,

wenn du die Spalten "eMail" und "Benutzername" in mysql als UNIQUE definierst, dann sind die einmalig. Dann kannst du ganz normal deine vorbereitete query schicken und mit "or die()" oder sowas was indirekt abrufen, obs den user schon gibt.

hier mal ein Beispiel:
PHP:
$query="INSERT INTO users (ID, eMail, Username) VALUES('1','foo@foo.bar','foobar');";
$result=mysql_query($query) or $fehler=true;

if($fehler)
{
  // hier gibts ein problem, user oder email existiert bereits
}
else
{
  // alles ok
}

Wäre zumindest eine Möglichkeit.

Gruß
Bratkartoffel
 
Zurück