kostenloser Webspace werbefrei: lima-city


problem mit mysql select und session

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    bastitrial

    Kostenloser Webspace von bastitrial

    bastitrial hat kostenlosen Webspace.

    Hallo liebes Forum,
    ich bin gerade dabei eine Seite zu erstellen auf der der user seine Daten einsehen und überarbeiten kann ...
    Jedoch scheitere ich an der SELECT Syntax ...

    $mysqlconnect = mysql_connect($mysqlhost, $mysqluser, $mysqlpass) or die ("Die Verbindung konnte nicht gerstellt werden");
    	mysql_select_db($mysqldata, $mysqlconnect) or die ("Datenbank konnte nicht ausgewählt werden!");
    	
    	$id = $_SESSION['SESS_MEMBER_ID'];
    	
    	$mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='$id'";
    	$mysqldaten_query = mysql_query($mysqldaten);
    	
    	while ($sqldaten = mysql_fetch_array($mysqldaten_query)) {
    		$sqldaten_username = $sqldaten['username'];
    		$sqldaten_first_name = $sqldaten['first_name'];
    		$sqldaten_last_name = $sqldaten['last_name'];
    		$sqldaten_email = $sqldaten['email'];
    		
    		echo "session_start()";
    		$_SESSION['SESS_FIRST_NAME'] = $sqldaten_first_name;
    		$_SESSION['SESS_LAST_NAME'] = $sqldaten_last_name;
    		$_SESSION['SESS_email'] = $sqldaten_email;
    		$_SESSION['SESS_username'] = $sqldaten_username;
    	}


    Die Daten sollen mit der id in der Datenbank verglichen und dann rausgepickt werden.. Ist das so korrekt oben?

    Kann mir bei meinem problem jemand helfen? Danke!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ändere
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='$id'";

    in
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='".$id."'";

    Es geht allerdings besser, weil modernder, wenn du Prepared Statments mit mysqli bzw PDO verwenden würdest
  4. Autor dieses Themas

    bastitrial

    Kostenloser Webspace von bastitrial

    bastitrial hat kostenlosen Webspace.

    timebandit schrieb:
    Ändere
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='$id'";

    in
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='".$id."'";

    Es geht allerdings besser, weil modernder, wenn du Prepared Statments mit mysqli bzw PDO verwenden würdest



    Ich hab das dann gleich probiert...
    ... Ich bekomme diese Fehlermeldung:
    Parse error: syntax error, unexpected T_VARIABLE in /home/webpages/lima-city/""""""".php on line 12

    Und line 12 ist diese Zeile:
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='"$id"'";


    Aber noch nebenbei 2 Fragen: Ist das korrekt mit den $_SESSION Zeilen? Welche Methode meinst du genau?
  5. h**s

    hallo bastitrial,

    die von dir beschriebene fehlermeldung weist darauf hin das du wahrscheinlich immernoch nicht die von timebandit schon besagten "punkte" geschrieben hast um die php-variable in den query-string zu verketten.

    des weiteren sind mir noch zwei unstimmigkeiten in deinem code aufgefallen:
    (1.) du erwartetst doch wahrscheinlich einen eindeutigen datensatz wenn du nach einer bestimmten id fragst, also warum dann die while-schleife zum abholen mehrerer ergebnisse ?
    (2.) ein
    echo "session_start()";
    führt lediglich zur ausgabe der zeichenkette "session_start()" und lässt keine session beginnen. außerdem wäre es wohl sicherer die session zu beginn des scriptes zu starten, da eine eventuelle mysql-fehlermeldung als ausgabe das korrekte starten einer session unterbindet. beginne die session am besten immer ganz oben im script mit
    session_start();
    und weise ihr bei erfolgreicher übereinstimmung deiner mysql-abfrage die gewünschten felder zu:
    session_start();
    	
    	if(isset($_SESSION['SESS_MEMBER_ID'])) {
    		$mysqlconnect = mysql_connect($mysqlhost, $mysqluser, $mysqlpass) or die ("Die Verbindung konnte nicht gerstellt werden");
    		mysql_select_db($mysqldata, $mysqlconnect) or die ("Datenbank konnte nicht ausgewählt werden!");
    		$mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='".mysql_real_escape_string($_SESSION['SESS_MEMBER_ID'])".'";
    		$mysqldaten_query = mysql_query($mysqldaten);
    		if(mysql_num_rows($mysqldaten_query)==1) {
    			$sqldaten = mysql_fetch_array($mysqldaten_query);
    			$_SESSION['SESS_FIRST_NAME'] = $sqldaten['first_name'];
    			$_SESSION['SESS_LAST_NAME'] = $sqldaten['last_name'];
    			$_SESSION['SESS_email'] = $sqldaten['email'];
    			$_SESSION['SESS_username'] = $sqldaten['username'];
    		}else {
    			echo 'Fehler. Diese MemberId ist nicht in der Datenbank vorhanden.';
    		}
    	}else {
    		echo 'Fehler. Keine MemberId in der Session vorhanden.';
    	}
  6. Autor dieses Themas

    bastitrial

    Kostenloser Webspace von bastitrial

    bastitrial hat kostenlosen Webspace.

    jetzt bekomme ich diese Fehlermeldung:

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in core/my_profile/connect.php on line 14


    => Fehler. Diese MemberId ist nicht in der Datenbank vorhanden.

    Nutzer ist jedoch in der Datenbank vorhanden ... ?!

    Beitrag zuletzt geändert: 19.4.2013 15:04:48 von bastitrial
  7. Hallo bastitrial,

    vermutlich ist Dein sql_string immer noch fehlerhaft.

    hier mal der teil von php mit dem ich es simuliert habe
    $sql="select * from artikel as a where a.Artikelnr ='unfug'";
    $result=mysql_query($sql);
    $count_data=mysql_num_rows($result);
    echo"Anzahl Daten:   ".$count_data.'<br>';
    echo"SQL-String:   ".$sql.'<hr>';
    
    $sql="select * from artikel as a where a.Artikelnr =";
    $result=mysql_query($sql);
    $count_data=mysql_num_rows($result);
    echo"Anzahl Daten:   ".$count_data.'<br>';
    echo"SQL-String:   ".$sql.'<hr>';


    und hier die Ausgaben:

    Anzahl Daten: 0
    SQL-String: select * from artikel as a where a.Artikelnr ='unfug'
    ------------------------------------------------------------------------------
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in test.php on line 23
    Anzahl Daten:
    SQL-String: select * from artikel as a where a.Artikelnr =
    ------------------------------------------------------------------------------

    Schau oder poste doch mal die variable $mysqldaten...
    gruß
    harro
  8. if(isset($_SESSION['SESS_MEMBER_ID'])) {
    $mysqlconnect = mysql_connect($mysqlhost, $mysqluser, $mysqlpass) or die ("Die Verbindung konnte nicht gerstellt werden");
    mysql_select_db($mysqldata, $mysqlconnect) or die ("Datenbank konnte nicht ausgewählt werden!");
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='".mysql_real_escape_string($_SESSION['SESS_MEMBER_ID'])".'";
    $mysqldaten_query = mysql_query($mysqldaten);

    Richtig:
    id='".mysql_real_escape_string($_SESSION['SESS_MEMBER_ID'])."'";

    Außerdem könnten weitere Fehlerquellen vorhanden sein.
    Wie generierst du den Wert für $_SESSION['SESS_MEMBER_ID'] ?
    Ist das ein String oder ein Integer?
    Von welchem Typ ist Tabellenspalte "id" in deiner DB.



    Beitrag zuletzt geändert: 19.4.2013 16:56:54 von timebandit
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!