Was ist falsch ****?

Raptor72

Mitglied
Habe noch wieder eine neue Frage und zwar funktioniert irgendwas nicht richtig.
Ich kann mich einloggen und auch auf der nächsten Seite wird der richtige Login-Name mittels echo $_SESSION['username']; angezeigt also auch in der Variablen richtig übergeben, aber wenn ich eine MySql Abfrage der zu dem Namen gehörenden Daten machen möchte zeigt er mir nichts an, brauche da also nochmal Hilfe.

PHP:
<?php

echo $_SESSION['username'];
if(isset($_SESSION['username']))
{
  mysql_connect("****", "****", "****"); 
  mysql_select_db("homepage") or die ("Datenbank konnte nicht ausgewählt werden");

$abfrage = "SELECT * FROM mitglieder WHERE username = '$username'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{

?> 

  <form name="profildaten2" action="" method="post">
    <tr>
      <td align="center" colspan="3">
      <font color="#00FF99" size="+1"><u>
        Kommentar
      </u></font></td>
    </tr>
  <tr>
    <td colspan="3">&nbsp;</td>
  </tr>
    <tr>
      <td width="33%" align="center">
        <label for="hobbies">Meine Hobbies</label>
      </td>
      <td colspan="2">
        <textarea name="hobbies" cols="50" rows="5" style="background-color:#CCC"><?php echo $row->hobbies; ?></textarea>
      </td>

Wenn ich bei der Abfrage den Usernamen direkt eingebe bekomme ich die richtigen Daten angezeigt

Ist nur ein Teil des Scriptes also die Klammern und alles andere sind richtig gesetzt und ich bekomme auch keine Fehlermeldung ! ;-)

Danke schon jetzt ;)
 
Danke dir, aber jetzt bekomme ich diese Fehlermeldung !!

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Sven Homepage\profildaten2.php on line 43

line 43 ist die while($row Abfrage

:-$
 
Berichtigung, Fehleranzeige war mein zu schnelles Handeln, aber sonst das gleiche Problem wie vorher, username wird angezeigt aber keine Daten ausgegeben.
 
hier mal die korrekte zeile ... zur Erklärung bitte in die PHP-Doc gucken.
Die Erklärung würde mich dann aber schon mal interessieren.
Da kommt nämlich exakt das gleiche bei raus. Warum das so ist? Siehe unterschied zwischen single und double quotes in der Doku.
PHP:
$username = "foobar";
$abfrage = "SELECT * FROM mitglieder WHERE username = '$username'";
var_dump($abfrage);
//string 'SELECT * FROM mitglieder WHERE username = 'foobar'' (length=50)
$abfrage = "SELECT * FROM mitglieder WHERE username = '".$username."'";
var_dump($abfrage);
//string 'SELECT * FROM mitglieder WHERE username = 'foobar'' (length=50)

Ich würde viel eher behaupten das folgendes fehlt:
PHP:
$username = $_SESSION['username'];
 
Ja cool, jetzt ****t es,.

Muß das

$username = $_SESSION['username'];

immer in jede neue Seite mit rein ?
War mir echt nicht bekannt aber es funktioniert ja jetzt so und daher DANKE :-)
 
Das was du ursprünglich versucht hast geht nur falls register_globals aktiviert ist. Das sollte allerdings aus Sicherheitsgründen niemals akiviert sein also probier es bitte garnicht erst aus.
Um es ganz kurz zu erklären:
Das Problem ist das du mit $abfrage = "SELECT * FROM mitglieder WHERE username = '$username'"; eine Variable ($username) ansprichst die nicht existiert.
Wäre register_globals aktiviert würde die Variable existieren.
 
Klar, jetzt wo du es sagst klingt es ja auch logisch denn woher sollte die Variable $username auch existieren :D

War wohl irgendwie der Meinung das die Variable mit rübergenommen wird, aber frag mich nicht warum :D
Sollte wohl mal ne Pause machen, sitze zu lange hier vorm PC.

Danke nochmal
 
Die Erklärung würde mich dann aber schon mal interessieren.
Da kommt nämlich exakt das gleiche bei raus. Warum das so ist? Siehe unterschied zwischen single und double quotes in der Doku.
PHP:
$username = "foobar";
$abfrage = "SELECT * FROM mitglieder WHERE username = '$username'";
var_dump($abfrage);
//string 'SELECT * FROM mitglieder WHERE username = 'foobar'' (length=50)
$abfrage = "SELECT * FROM mitglieder WHERE username = '".$username."'";
var_dump($abfrage);
//string 'SELECT * FROM mitglieder WHERE username = 'foobar'' (length=50)

Ich würde viel eher behaupten das folgendes fehlt:
PHP:
$username = $_SESSION['username'];

na du lustiger Molch .. wo hast du das denn ausgegraben ?
Kugg dir mal bitte das Syntaxhighlightning an : der unterschied ist dass beim ersten wirklich der string WHERE usersname='$username' an die DB geschickt wird ... bei meiner korrigierten variante wird sichergestellt das der INHALT von $username eingetragen wird ... oder falls variable nicht deklariert eben GARNICHTS ... kein NULL oder sonstwas sonder dann einfach nur WHERE username='' ... alter echt ... sowas regt mich auf große fresse haben und dann nicht mal wirklich verstehen wo von man labert ...

weil usm dir NOCH GRÖßer zu beschrieben .... DA STEHEN LINKS UND RECHTS ">DOPPELTE<" ANFÜHRUNGSZEICHEN .... KEINE EINFACHEN -.-'
 
Naja aber man braucht sich ja nicht in die Haare bekommen jetzt oder sich aufregen, es funktioniert jetzt mit beiden Tips, einmal mit der abgeänderten Abfrage (username = '".$username."') und eben mit der vorherigen deklaration der Variablen $username = $_SESSION...

Und damit funktioniert es und ich denke ist auch sicher :)

Also danke nochmal an Euch :)
 
Zurück