Neuigkeiten:

still alive...

Hauptmenü

Bestimmte zeilen einer db aufrufen

Begonnen von 1manni1, 21. Dezember 2006, 15:27:46

Vorheriges Thema - Nächstes Thema

1manni1

Nun also ich hab eine Tablle mit den Spalten Playername, Kills und Deaths.
Nun sollte es eigentlich so gehen, dass wenn man auf einen Playername klickt, das dann sich wie bei einem link eine neue seite öffnet eben nicht als popup und dort dann in einer Tabelle nur die kills und deaths dieses Players stehen
So sieht der code zur zeit aus:
 

/*Abfrage und Zusammenrechnen*/
$abfrage = \"SELECT playername, SUM(kills) AS kills, SUM(deaths) AS deaths FROM ranking GROUP BY playername ORDER BY kills DESC\";
 $ergebnis = mysql_query($abfrage)
 or die(mysql_error().\'\'.\'$abfrage\'.\'\');
 
/*Ausgabe in Tabelle*/
 
echo \"\";
echo \"\";
while($row = mysql_fetch_assoc($ergebnis))
{
echo \"$row[playername]\";
echo \"$row[kills]\";
echo \"$row[deaths]\";
}
echo \"\";
echo \"\";
?>

 
 
Und der code zum link sieht dann so aus:
 

/*Abfrage und Zusammenrechnen*/
if (isset($_GET[\'player\']))
{
$abfrage = \"SELECT playername, kills, deaths FROM ranking WHERE playername= \'\".$_GET[\'player\'].\"\' ORDER BY kills DESC\";
}
 $ergebnis = mysql_query($abfrage)
 or die(mysql_error().\'\'.\'$abfrage\'.\'\');
 
$num_rows = mysql_num_rows($ergebnis);
echo \"$num_rows Rows\\n\";
 
/*Ausgabe in Tabelle*/
echo \"\";
echo \"\";
while($row = mysql_fetch_assoc($ergebnis))
{
echo \"$row[playername]\";
echo \"$row[kills]\";
echo \"$row[deaths]\";
}
echo \"\";
echo \"\";

 
 
was hab ich da falsch gemacht
anschauen könnte ihr das unter www.n0n-clan.net/abfrage.php

Hm. Beim User \"hugh\" (bzw. \"HUGH\") funktioniert die Abfrage aber. Poste mal einen Dump deiner Datenbank im CSV-Format.

blackbit

Hallo 1Manni1,
Das o.g. Programm ist anfällig für eine SQL-Injection. Die Verwendung von GET-Variablen ungeprüft in der WHERE-Clause kann von Hackern böse missbraucht werden um Datenbankinhalte zu ändern:
WHERE playername= \'\".$_GET[\'player\'].\"\'
Gruß,
Blackbit
s. http://de.wikipedia.org/wiki/SQL-Injektion\" rel=\"external nofollow\">http://de.wikipedia.org/wiki/SQL-Injektion

Powie

@Blackbit: Ja das ist wohl korrekt, aber hilft dem Anfänger beim finden seines ursprünglichen Problems nicht weiter.
@manni: Die GROSS/kleinschreibung ist immer zu beachten wenn du mit = suchst.
Zwei Möglichkeiten gibts dennoch:
1. Where Upper(playername) = Upper(\'\".$_GET[\'player\'].\"\') ....
2. Where playername Like \'\".$_GET[\'player\'].\"\'
Es ist ein Trugschluss das erstere Variante schneller geht, auch wenn das manche Leute immer wieder meinen. Bei Variante 1 wird ein Abbild der Tabelle erstellt mit allen in Gross gewandelten Spalten für playername und dann wird gesucht. Beim Like hingegen wird GROSS/klein hingegen einfach ignoriert bei der Suche. Bei kleinen Tabellen noch nicht merklich, bei großen Datenbanken jedoch Welten in der Performance.

jogibär

Die GROSS/kleinschreibung ist immer zu beachten wenn du mit = suchst.[/quote]
Stimmt leider nicht ganz, MySQL ist es völlig wurscht, ob Groß- oder Kleinschreibung benutzt wird. Zumindest bei varchar und text.
Gruß
Jogibär

Der Rumplärrer ist also auch noch ein Superschlaule. Na Bravo.

jogibär

Ohh, ich bitte untertänigst um Entschuldigung, wenn ich eine hier gegebene Aussage korrigiere, wenn sie nicht stimmt. Darf man das hier nicht?

Powie

tatsächlich...... mySQL scheint das egal zu sein..
Hatte das von DB2 im Kopf, dort wird unterschieden.

all your base are belong to us / Discord