Announcement

Collapse
No announcement yet.

php Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • php Abfrage

    Huhu, habe folgendes Problem mit einer Abfrage:
    Ich lese IDs aus einer Tabelle (visiter) aus. Diese IDs sollen aber Angezeigt werden als Usernamen. Die Usernamen stammen aus der Tabelle (user).
    Aslo die abgefragte ID soll in der Anzeige durch den Usernamen ersetzt werden.
    Die IDs werden korrekt angezeig, doch der Username wird immer nur vom ersten wiedergegeben.

    Seit drei Tagen bastel in nun dran rum und mir raucht der Kopf

    Hier der Auszug aus dem Quelltext (php):

    Code:
    $besucher = mysql_query("SELECT * FROM visiter WHERE `visituser` = ".$_GET['userid']." ORDER BY `ID` DESC LIMIT 0 , 50 ") ;
    			
    						
    while($lastvisitor = mysql_fetch_array($besucher)){  
    echo(      stripslashes(htmlspecialchars($lastvisitor['visitor'] ))."<br />" );
    $abc =  stripslashes(htmlspecialchars($lastvisitor['visitor']) );
    $anzeige = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE ".stripslashes(htmlspecialchars($abc['ID'])).""));
    			 
    echo(  stripslashes(htmlspecialchars($anzeige['username']))."<br />" );
    }

  • #2
    Erstmal solltest Du die komischen Accents in den Abfragen weglassen (`visituser`), die haben da nichts verloren. Dann sollte man nie nie niemals ungeprüft URL-Parameter direkt in ein SQL-Statement übernehmen (Stichwort SQL Injection).

    Aber zur Frage: Warum benutzt Du nicht einfach einen JOIN und holst gleich den Usernamen zur passenden ID? Und warum holst Du alles (select *), wenn Du doch nur die ID und den Namen benötigst?

    Code:
    select visiter.id, user.username
    from visiter, user
    where visiter.id = user.id
      and visiter.visituser = [hier kommt der vorher überprüfte URL-Parameter hin]
    BTW: Wieso heißt die Tabelle "visiter" (falsches Englisch) und das Feld "visitor" (richtig)? Absicht? Typo?
    Dirk

    Comment

    Working...
    X