[PHP] DB über Variable auslesen klappt nicht

M

Mr. Snoot

Gast
Hio,

ich hab ne Namensliste in einer Datenbank und will z.B. alle Namen mit dem Anfangsbuchstaben A auslesen.

Das ganze klappt, wenn ich es direkt im Code angebe, also z.B.
PHP:
$anfrage = "SELECT * FROM liste WHERE first_letter = 'A'";


Wenn ich das ganze aber über einen Link aufrufe spuckt die DB nichts aus.

Also z.B. mit diesem Link:
HTML:
<a href="../index.php?letter=A">Anfangsbuchstabe A</a>
und diesem Script
PHP:
$anfrage = "SELECT * FROM liste WHERE first_letter = '$letter'";
Es kommt aber auch kein Fehler oder so. Über ein Formularfeld geht es auch nicht.

Das kann doch nicht so schwer sein :freak:

Das Script geht dann so weiter
PHP:
$anfrage = "SELECT * FROM liste WHERE first_letter = '$letter'";
$ergebnis = mysql_query($anfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->nachname, $row->vorname;
echo "<br>";
}
...

edit: okay, so gehts: $letter = $_GET['letter'];

Aber ich hab hier zig verschiedene Beispiele, wo niemals die Varialbe mit GET übergeben wird. War das vielleicht in früheren PHP Versionen mal möglich?
 
Zuletzt bearbeitet:
es ist auch heute noch möglich, du musst lediglich in der php.ini "register_globals=on" setzen..ist aber ein sicherheitsrisiko, deswegen ist es bei den meisten hostern auf off gesetzt.

du kannst auch einfach in deinem QUERY statt $letter $_GET['letter'] schreiben, damit sparst du dir das anfängliche umwandeln, aber is ja auch schnuppe ^^
 
Ah ja, das kommt mir doch bekannt vor. $letter sieht aber schöner aus, also bleibt das mal so :)


Da hät ich gleich mal noch ne Frage zu MySQL-Datenbanken generell.

Ich würd gern das Lexikon meiner Homepage über die DB laufen lassen, dabei gibts halt zu jedem Wort ne kürzere oder längere Beschreibung.

Kann ich in einem als Text formatierten Feld problemlos jeden beliebigen Text ggf. auch mit HTML-Code dazwischen speichern?

Wie sollten z.B. Umlaute angegeben werden (Ä oder &Auml;) oder muss man bei sonstigem Code was beachten?
 
ja kannst du.Man musst halt nur auf die länge des textes achten, also nicht, dass dein feld zu kurz für deinen ellenlangen text ist ;D (gibt ja auch noch mediumtext oder longtext)

html code kannste alles darein schreiben, wird ja beim holen aus der datenbank dann vom server geparst und als html ausgegebn...

umlaute hängen von der codierung deiner webseite ab... ist deine seite UTF-8 kannst du sie als umlaute ausschreiben, ist sie jedoch ISO-8859-1 musst du sie als enitys (&auml; etc,) umschreiben..
 
Du solltest auch die $letter Variabel überprüfen. Zur Zeit ist es so möglich direkt code in deine sql anweisung einzuschleusen. Höchstwahrscheinlich ist auf dem Server magic_quotes_gpc = On gesetzt, aber das soll man auch umgehen können.

Würde sowas wie

PHP:
switch($letter):
   case "A":
                 $sqlletter = "A";
                 break;
.....
endswitch;

einbauen.

Das ist wohl etwas mehr Arbeit, aber damit ist man auf der sicheren Seite und keiner löscht dir deine DB.
 
Zurück
Oben