Problem mit PHP und MYSQL [findet Nickname nicht]

matzseesi

Erfahrenes Mitglied
Hi Leute

Also wieder mal ein Problem dass ich mir nicht erklären kann
Habe folgende Funktion geschrieben mit der ich zu einer Datenbank connecte daraufhin zu einer Tabelle und dann einen User raussucher und je nach dem ob $all auf 1 ist oder auf 0 liest er mir alle Datensätze (aber nicht alle Spalten) von allen Usern aus bzw nur den den Datensatz des jeweiligen Users (dafür aber alle Spalten) Sodala gut und recht. Nur es funktioniert nicht. (Warum wär ich wohl sonst hier)

Die Datenbank schreibt dies als Fehler zurück: " Unknown column 'Posseidon' in 'where clause' "

Wenn ich versuche mich mit meinem Nicknamen Posseidon und passwort matthias anzumelden. Was kann da sein?

Dies ist der SQL String den ich an die Datenbank übergebe:
SELECT vorname, nachname, nickname, pw, usergroup, icq, email, ndemail, handy, tel, geb, bundesland, staat, strasse, plz, stadt, lastlogin, logincount, usersince, motto FROM user WHERE nickname = Posseidon

Bitte um antwort

Grüße Matz


PHP:
function connect_user_db($db_username, $db_passwort, $db_host, $db_dbname, $db_tablename, $selection , $all, $name)
  {
   // Funktion zum herstellen einer Verbindung zur Datenbank
   //============
   // ErrorCodes
   //============
   // no_connection -> Es kann keine Verbindung zur Datenbank hergestellt werden
   // no_table      -> Der Tablename konnte nicht gefunden werden
   // no_select     -> Kein User mit diesem Namen gefunden
   //============


   // Versuchen die DB-Verbindung herzustellen
   if (!($verbindung = mysql_connect($db_host,$db_username,$db_passwort)))
     {
      return $error='no_connection';
      exit();
     }


   //Versuchen die DB auszuwählen
   if (!mysql_select_db ($db_dbname, $verbindung))
     {
      $error='no_database';
      return $error;
     }
   if (!($all=='1'))
     {
      $query = "SELECT vorname, nachname, nickname, pw, usergroup, icq, email, ndemail, handy, tel, geb, bundesland, staat, strasse, plz, stadt, lastlogin, logincount, usersince, motto FROM " . $db_tablename . " WHERE nickname = " . $name;
      if (!($ergebniss=mysql_query($query)))
        {
         $error = 'Die Datenbank gab folgenden Fehler zurück: " ' . mysql_error() . ' "';	
	     return $error;
        }
	   else
	    {
	     if (mysql_num_rows($ergebniss)>1)
	       {
	       	$error='multiple_user';
	       	return $error;
	       }
	     $abfrage = mysql_fetch_object($ergebniss);
	     mysql_close($verbindung);
	     return $abfrage;
	    }
     }
    else
    {
     $query='SELECT vorname, nachname, nickname, pw, usergroup, email, lastlogin, logincount, usersince FROM ' . $db_tablename;
     if (!($ergebniss=mysql_query($query)))
        {
         $error='no_select';
         return $error;
        }
	   else
	    {
	     mysql_close($verbindung);
	     return $ergebniss;
	    }
    }	
  }
 
Hallöchen,

setzt am besten deine Spaltennamen mal in backticks, und quote den namen mal.
Das sieht dann ungefähr so aus:

PHP:
$query = "SELECT `foo` FROM `bar` WHERE `nikname`= 'Poseidion'";

achja, noch ein hinweis:

PHP:
if (!($all=='1'))
das hier geht auch kürzer:

PHP:
if ($all != '1')
;)
mfg
 
ok

Sobald ich das mache schreibt der folgenden Fehler

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''user' WHERE nickname = 'Posseidon'' at line 1 "

Mein String sieht dann so aus:

SELECT vorname, nachname, nickname, pw, usergroup, icq, email, ndemail, handy, tel, geb, bundesland, staat, strasse, plz, stadt, lastlogin, logincount, usersince, motto FROM 'user' WHERE nickname = 'Posseidon'

BZW so sieht die Fehlermeldungaus wenn ich alles in diese ' mache:

Die Datenbank gab folgenden Fehler zurück: " You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''user' WHERE 'nickname' = 'Posseidon'' at line 1

und so mein sql string

SELECT 'vorname', 'nachname', 'nickname', 'pw', 'usergroup', 'icq', 'email', 'ndemail', 'handy', 'tel', 'geb', 'bundesland', 'staat', 'strasse', 'plz', 'stadt', 'lastlogin', 'logincount', 'usersince', 'motto' FROM 'user' WHERE 'nickname' = 'Posseidon'



Funktioniern tuts trotzdem nicht
Was kann da noch falsch sein?
 
backticks verwenden....und nicht quoten

backticks sind die etwas schrägen hochkommata links (wo auch sonst) neben der backspace taste (dabei aber schift drücken nicht vergessen :) )

Also nochmal...die Tabellen- und Spaltennamen kommen in Backticks, und Posseidon (oder ähnliches) werden gequotet.

Ich muss noch dazu sagen, dass ich so gut wie nie Backticks verwende, nur beim WHERE klausel quote ich die abfragenamen.
mfg
 
SELECT vorname, nachname, nickname, pw, usergroup, icq, email, ndemail, handy, tel, geb, bundesland, staat, strasse, plz, stadt, lastlogin, logincount, usersince, motto FROM user WHERE nickname = 'Posseidon'
 
hmm

Lol ich glaub ich spinn

War mir noch so sicher dass ich diese Variante versucht habe!

Sinnlos wie so oft aber Trotzdem danke für euere schnelle Hilfe

Grüße Matz
 
Zurück