MYSQL/PHP Werte übergeben

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
  • 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'