MYSQL/PHP Werte übergeben

  • Hallo, ich versuche gerade Werte von einem Account ausgeben zu lassen jedoch ohne Erfolg mein derzeitiger Code sieht so aus:


    PHP
    $guthaben = mysql_query("SELECT guthaben FROM accounts WHERE username = " .$_SESSION['username']. "");
    echo "<a href=\"\">User: " . $_SESSION["username"] . "</a><br />";
    echo "Guthaben: " . $guthaben . " EUR<br /><br />";


    Irgendwie verstehe ich MySQL doch nicht so gut wie ich es mir ausgedacht habe :/

    Besuche uns!

    2 Mal editiert, zuletzt von AceSoftwares ()

  • Hi Ace,


    Du versuchst direkt das MySQL-Query Handle als Guthaben zu verwenden.
    Du musst es aber erst einmal als "Result" holen (zb. mit mysql_fetch_object)


    Würde dann ungefähr so aussehen:


    PHP
    $SQL = sprintf("SELECT `guthaben` FROM `accounts` WHERE `username` = '%s'", mysql_real_escape_string($_SESSION["username"]));
    $Query = mysql_query($SQL);
    $Guthaben = mysql_fetch_object($Query)->guthaben;
    
    
    echo "<a href=\"\">User: " . $_SESSION["username"] . "</a><br />";
    echo "Guthaben: " . $Guthaben . " EUR<br /><br />";

    Benutze hauptsächlich folgende Technologien: Hyper-V, KVM, OpenVZ, Xen, PHP, C++, Exchange 2010, Citrix, KDTOP

  • Schreibe das mal so:


    PHP
    $guthaben = mysql_query("SELECT guthaben FROM accounts WHERE username='".$_SESSION['username']."'");
    echo "<a href=\"\">User: " . $_SESSION["username"] . "</a><br />";
    $row = mysql_fetch_assoc($guthaben);
    echo "Guthaben: " .$row["guthaben"]. " EUR<br /><br />";


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ähm, Ich denke es ist hier alles geklärt gewesen,


    Spricht irgendetwas gegen sprintf?
    oder gegen mysql_fetch_object?


    Zumal deine Variante so injectbar ist, da der Username nicht escaped wird.


    Und konform ist die SQL auch nicht. Ich meine damit die ` und ' Zeichen, Falls du damit was anfangen kannst.


    mfg

    Benutze hauptsächlich folgende Technologien: Hyper-V, KVM, OpenVZ, Xen, PHP, C++, Exchange 2010, Citrix, KDTOP

  • Ähm, Ich denke es ist hier alles geklärt gewesen,


    Ehm...der Threadersteller hat keine Rückmeldung davon erbracht aus diesem Grund ging ich vom Gegenteil aus ;)


    Spricht irgendetwas gegen sprintf?
    oder gegen mysql_fetch_object?


    Nope :)


    Zumal deine Variante so injectbar ist, da der Username nicht escaped wird.


    Woher willst du wissen, dass er den Usernamen vor der Session nicht escaped hat ? :rolleyes:


    Und konform ist die SQL auch nicht


    Relativ, also die ' ' habe ich angegeben bei der Variable wenn du genauer hinsiehst, die `` halte ich eigentlich für relativ überflüssig, da man es auch so machen kann und es da eigentlich so keine Unterschiede gibt ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Relativ, also die ' ' habe ich angegeben bei der Variable wenn du
    genauer hinsiehst, die `` halte ich eigentlich für relativ überflüssig,
    da man es auch so machen kann und es da eigentlich so keine Unterschiede
    gibt ;)

    Die `` sind nur notwendig, wenn du Tabellenübergreifende Querys mit beispielweise JOINs benutzt. Sie dienen lediglich zur Kategorisierung für mySQL. Wenn nur eine Tabelle angesprochen ist, interessieren die `` selbst mySQL nichtmal peripher, von daher hast du da vollkommen recht, sie sind unnötig für Schreibfaule.


    AceSoftwares: Ich denke er meint den Wert innerhalb der Session :p


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Die `` sind nur notwendig, wenn du Tabellenübergreifende Querys mit beispielweise JOINs benutzt


    Sie werden auch bei JOINS genutzt, richtig. Aber auch wenn MySQL-Spaltennamen systemreservierte Namen wie zb. "MAX" haben.
    Da kann es ohne ` Fehler verursachen etc

    Benutze hauptsächlich folgende Technologien: Hyper-V, KVM, OpenVZ, Xen, PHP, C++, Exchange 2010, Citrix, KDTOP


  • Sie werden auch bei JOINS genutzt, richtig. Aber auch wenn MySQL-Spaltennamen systemreservierte Namen wie zb. "MAX" haben.
    Da kann es ohne ` Fehler verursachen etc


    Stimmt, sorry, das hab ich verpennt zu erwähnen :p Aber denke jeder hat verstanden worum es geht ^^


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'