• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

problem mit mysql

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
 

Dadelu

Reinette Coulon
Registriert
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
 

jesusjones

Macoun
Registriert
02.09.04
Beiträge
116
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

und, welches forum hat dir nun die besseren antworten geliefert ;)
 

Mitglied 7974

Gast
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.

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

Richtig wär's so:
Code:
$SelectQuery = "SELECT * FROM ".$login." WHERE username ='".$username."'";

Nichts für ungut,
Matthias
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
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) );
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Auch ganz ohne Korinthengekacke:

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.
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Nebenbei: man sollte statt "SELECT *" immer die Spalten explizit angeben, da man so unabhängig von der tatsächlichen Spaltenreihenfolge in dr DB ist.

Was bei der Nutzung von assoziativen Arrays (wie sie in den meisten Skriptsprachen angeboten werden) ziemlich egal ist.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Was bei der Nutzung von assoziativen Arrays (wie sie in den meisten Skriptsprachen angeboten werden) ziemlich egal ist.
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
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Stimmt. Davon steht da aber nix.

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:

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

Diese Argumente hingegen kann ich vollends unterstützen :)
 
  • Like
Reaktionen: Skeeve

Hilarious

Gelbe Schleswiger Reinette
Registriert
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.