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



Reply via email to