1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

problem mit mysql

Dieses Thema im Forum "PHP & Co." wurde erstellt von bumeno, 07.09.07.

  1. bumeno

    bumeno Gast

    hey,

    ich hab folgendes problem: jedesmal wenn ich einen string mit einem datenbankeintrag vergleiche bekomme ich den fehler zurück, dass der eintrag nicht existiert.

    zb:

    SELECT * FROM `$login` WHERE `username` = `$username`

    gibt folgenden fehler:

    Unknown column 'username' in 'where clause'

    ich hab dermaßen oft gekuckt: ich hab nirgends tippfehler drin. es geht nur wenn ich einen integer benutze.

    dave
     
  2. Dadelu

    Dadelu Reinette Coulon

    Dabei seit:
    06.07.05
    Beiträge:
    939
    Hi

    Nun, ohne Zugriff auf meine Home Daten, kann ich dir kein Beispiel nennen. Jedoch so auf den ersten Blick, nimm die ` vom Spaltennamen weg. Sie sind zwar nicht falsch, aber sie werden nicht gebraucht :)

    Bin mir nicht sicher, aber wenn du einen String vergleichen willst, musst Hochkommas (') machen und nicht `.

    Hastu du mal $Login ausgegeben vor dem Query? Wenn dies natürlich leer, oder einen falschen Wert besitzt, findet er die DB nicht (sollte jedoch einen anderen SQL - Error auswerfen)

    Und dann , wenn du Tabelle / Spalte dynamisch machen willst, müsstest du den String konkatenieren!

    Hier dein Beispiel:

    Code:
    $SelectQuery = "SELECT * FROM".$login." WHERE username ='".$username."'";
    und dann

    Code:
    $Resultat = mysql_query($SelectQuery);
    Probiers mal, sollte funktionieren.

    Gruss Dario
     
  3. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
    PHP kann durchaus auch Stringinterpolation.
     
  4. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Bitte solchen Code nicht so einfach verwenden. Immer an die Gefahr von SQL Injection denken!
     
  5. jesusjones

    jesusjones Macoun

    Dabei seit:
    02.09.04
    Beiträge:
    116
    und, welches forum hat dir nun die besseren antworten geliefert ;)
     
  6. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    Ich spiel nur ungern den Korinthenkacker, aber dieser Code würde nur zu einem Fehler führen, weil ein Leerzeichen zwischen FROM und $login fehlt.

    Richtig wär's so:
    Code:
    $SelectQuery = "SELECT * FROM ".$login." WHERE username ='".$username."'";
    Nichts für ungut,
    Matthias
     
  7. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Auch ganz ohne Korinthengekacke:

    Schöner wär's so:

    Code:
    $SelectQuery = sprintf("SELECT * FROM %s WHERE username='%s LIMIT 1"
                                    , mysql_real_escape_string($login)
                                    , mysql_real_escape_string($username) );
    
     
  8. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    kleine Korrektur:

    Code:
    $SelectQuery = sprintf("SELECT * FROM %s WHERE username='%s' LIMIT 1"
                                    , mysql_real_escape_string($login)
                                    , mysql_real_escape_string($username) );
    
    Nebenbei: man sollte statt "SELECT *" immer die Spalten explizit angeben, da man so unabhängig von der tatsächlichen Spaltenreihenfolge in dr DB ist.
     
  9. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Was bei der Nutzung von assoziativen Arrays (wie sie in den meisten Skriptsprachen angeboten werden) ziemlich egal ist.
     
  10. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Stimmt. Davon steht da aber nix.

    Randbemerkung: Ich ziehe dennoch die Angabe der Spalten vor:
    • Es wird bereits beim SELECT angegeben, welche Spalten man erwartet
    • Man kann die Ausgabe aufs Minimum der benötigten Spalten einschränken
     
  11. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Die Variablenbezeichner der Form $XXXX deuten aber schon sehr darauf hin und die Möglichkeit des assoziativen Zugriffs kennt er spätestens jetzt, aber ich weiß, du bist ja der Klugscheißer hier ;) :innocent:

    Diese Argumente hingegen kann ich vollends unterstützen :)
     
    Skeeve gefällt das.
  12. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Endlich jemand, der es einsieht. Ich hoffe, das beschert Dir kein negatives Karma! Prophylaktisch gab es positives von mir.
     
  13. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Danke für die Korrektur, Skeeve. Und darüber hinaus ein prima Beitrag! :D
    Wenn's keine Karmalatten mehr gibt, mach ich das eben hier öffentlich.
     
  14. Hobbes_

    Hobbes_ Gast

    Ja, weshalb gibt's die eigentlich nicht mehr?
     
  15. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Gute Frage, vermutlich eine »lange Geschichte«...
     

Diese Seite empfehlen