PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Werte aus DB in Variablen setzen


DanielEXQ
03.01.2003, 17:01:44
Hallo,

kann mir vielleicht jemand bei folgendem Problem helfen.
Ich möchte gerne Werte aus einer Tabelle in Variablen setzen. Nicht die komplette Tabelle, sondern nur 2 Spalten in 2 Variablen!
Nach einem erfolgreichen connect an die DB führe ich folgendes Statement aus:

$sqlstm = "SELECT nick, passwort FROM spieler INTO $db_nick, $db_passwort WHERE nick = '$nick'";
$bOk = mysql_query($sqlstm, $hSql) or die("Fehler beim Login: " . mysql_error());

if ($nick == $db_nick)
{
if ($passwort == $db_passwort)
{
print ("Login erfolgreich abgeschlossen!<br><a href=startseite.html>Weiter zum Kampfmenü -></a><br><br>");
}
else
{
print("Falscher Benutzername oder Passwort! <br> <a href=anmeldung.html>zurück zum Login</a> <br>");
}
}
else
{
print("Falscher Benutzername oder Passwort! <br> <a href=anmeldung.html>zurück zum Login</a> <br>");
}

Dann kommt aber folgende Fehlermeldung:
Fehler beim Login: Something is wrong in your syntax près de ' WHERE nick = 'danielexq'' à la ligne 1

HAt jemand eine Idee?!

MiH
03.01.2003, 18:02:01
dein query ist vom anderen stern oder?
$sql = "SELECT nick, passwort FROM spieler WHERE nick = '$nick' && passwort = '$db_pass'";

damit erhälst du ein resultat was 1 sein muss, wenn alles stimmt, sonnst 0 dann ist es falsch.

du kannst das so abfragen:

$res = mysql_query($sql,$id);
if(mysql_num_rows($res) == 1 ){
echo "ok";
}else{
echo "falsch";
}

Matt
04.01.2003, 08:33:41
das dachte ich mir auch so in die richtung, dass die query ziemlich abgedreht ist - hast du "Per Anhalter durch die Galaxis gelesen"?
Und ich wusste gar nicht, dass mySQL auch eine französische Version hat, aber das wäre mal interessant, wenn es auch eine altgriechische gäbe ;)
zum inhalt jedoch könntest du es dir noch einfacer machen, indem:


$sql="select count(*) from spieler where nick='$nick' and password='$pw'";
$res = mysql_query($sql,$id);
if(mysql_get_field($res,0)!=1)
{
die("kein gültiger user!");
}
print "willkommen, user $user";


macht folgendes: es zählt die zeilen, in denen der angegebene username und das angegebene passwort vorhanden sind und gibt die anzahl zurück. Wenn diese nicht 1 ist, heisst das entweder, dass es so eine spalte nicht gibt, oder, dass es mehrmals den gleichen user nicht gibt, was nicht sein darf, da du dann nicht feststellen kannst, als welcher user er einloggt (er könnte in den falschen account geraten, oder sonstwas, also darf er auch nicht eingeloggt werden) dagegen dass das nicht vorkommt solltest du dich allerdings vorher nochmals absichern!

DanielEXQ
09.01.2003, 18:12:39
Naja, was heißt abgedreht?!
Ich habe 2 Jahre lang SQL-Talk gemacht.
Leider ist mySql nicht so schlau, bzw. die Syntax wird anders geschrieben.

Also nimmt einwenig rücksicht auf mich! *g*
Ich bin, was PHP und MySql angeht, blutiger anfänger!

Aber danke für die Tipps! Funzt auch jetzt...

Und keine Sorge! Ihr hört von mir wieder!! *lol*