Hallo,
Marian Seitner [EMAIL PROTECTED] schrieb im Newsbeitrag
news:[EMAIL PROTECTED]
vom Prinzip schon, dann mit SELECT COUNT(*) AS Anzahl FROM...
$data = mysql_fetch_array($result))
{
$anzahl=$data[Anzahl];
...
doch wozu? Meines Wissens nach müsste der Index schneller sein und Du
benötigst doch eh nur die Auskunft, ob ein Datensatz gefunden wurde oder
nicht. Wenn Du die Tatsache mit einkalkulierst, eventuell doppelte
Usereinträge vorzufinden, dann solltest Du Deine Tabelle(n) noch einmal
überarbeiten. Theoretisch macht es aber nur Sinn, Userdaten so zu
speichern,
dass Duplikate ausscheiden.
Hi Rene!
Hast schon recht, doppelte User hab ich keine, mir gings lediglich um die
Syntax, ich bin noch Neuling in Sachen MySQL.
Ist es möglich, daß wenn ein Datensatz gefunden wurde ich auch die ID
dieses
Satzes bekomme? Nachdem ich nämlich weiß, ob der User der ist der er
vorgibt
zu sein, frage ich die Tabelle noch einmal ab um an die Rechte des Users
heranzukommen, die ebenfalls in der selben Tabelle abgespeichert sind.
Hiermit prüfe ich, ob die Daten korrekt sind
$query = SELECT count(*) FROM $dbt WHERE name='$name' AND pass='$pass';
$res = mysql_query($query, $db); $ret = mysql_fetch_row($res);
Ergebnis ist dann in $ret[0].
Dann mach ich die gleiche Abfrage nochmal, nur diesmal mit allen Angaben
$query = SELECT * FROM $dbt WHERE name='$name' AND pass='$pass';
$res = mysql_query($query, $db); $ret = mysql_fetch_array($res);
Wie gesagt, ich würde gerne wissen ob die ID des Datensatzes schon bei der
ersten Abfrage zurückgeliefert werden kann. Dann würde eine weitere Suche
in
der kompletten Table entfallen. Oder kann man die zweite Abfrage evtl.
einfacher gestalten?
Gruß
Marian
Dann ist die bisherige Vorgehensweise wieder nicht mehr empfehlenswert.
Du musst Dir immer eines von vornherein klar machen: Welche Infos möchte ich
von der DB haben - hier jetzt also:
a) ist der User vorhanden
b) stimmen die von ihm gemachten Angaben
c) welche Rechte sind dem User zugewiesen.
Unter diesen Voraussetzungen mit COUNT zu arbeiten ist einfach gesagt
Unsinn.
Du brauchst im Prinzip die Berechtigung des Users, also fragst Du diese
gleich ab.
In der Auswertung prüfst Du dann if(!$result) -hier hast Du also keinen
Datensatz gefunden - entsprechende Fehlermeldung an den Benutzer ausgeben
oder eine entsprechende Routine aufrufen.
andernfalls hast Du den Benutzer gefunden, jetzt kannst Du (wenn Deine
Berechtigungsspalte 'rechte' heißt) dann mit
$query = SELECT id, rechte FROM $dbt WHERE name='$name' AND pass='$pass';
$res = mysql_query($query, $db);
$ret = mysql_fetch_row($res);
$userid = $ret[0];
$recht = $ret[1];
die Berechtigung und ID auslesen und entsprechend weiterverarbeiten.
Den von Dir beschriebenen Ansatz könnte man auch wählen, sollte man aber
nicht, da Du ja alle Infos schon mit EINER Abfrage bekommen kannst.
Gruß
Rene