problem mit mysql select und session
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
artikel
ausgabe
code
datenbank
datum
email
fehler
fehlermeldung
parameter
schleife
session
string
syntax
typ
unfug
url
verbindung
verwenden
zeile
-
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! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ä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 -
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? -
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
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 mitecho "session_start()";
und weise ihr bei erfolgreicher übereinstimmung deiner mysql-abfrage die gewünschten felder zu:session_start();
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.'; }
-
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 -
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
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage