Wat is beter en waarom

  • Ik zit even met het volgende, ik wil graag weten welke nu de beste/juiste manier is, en natuurlijk waarom..


    1.

    PHP
    mysql_query("UPDATE `accounts` SET `saldo` = `saldo` + `0.15` WHERE `id` = $username;");


    2.

    PHP
    mysql_query("UPDATE `accounts` SET `saldo` = `saldo` + `0.15` WHERE `id` = '$username'");


    3.

    PHP
    mysql_query("UPDATE accounts SET saldo = saldo+0.15 WHERE id = $username");


    Graag jullie info/input...

  • je kan om een veld en tabel etc een ` neerzetten maar om een getal of woord moet je ' gebruiken. Zeg maar de value die jij opgeeft in een update of insert mogen geen backticks ( ` ) gebruiken maar die moeten juist weer netjes in een single of double staan ( ', ")


    overigens hoe jouw mysql query gewoon moet:

    PHP
    // stukje beveiliging
    // stukken makkelijker om een variabel erbuiten te zetten die je simpel kan aanpassen?
    $double = (double) 0.15;
    mysql_query("UPDATE accounts SET saldo = saldo + '". $double ."' WHERE id = '".$username."'");


    en $username staat gelijk aan een id? rare naam voor een user id? noem het dangewoon $user_id / $userId / $userid, ik zou persoonlijk voor netheid kiezen dus $user_id

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

  • Oke, das een hoop info, top..!


    Vraag me af of deze combi, dan wel de juiste is..


    PHP
    $username = $_SESSION['userid'];


    Samen met deze


    PHP
    mysql_query("UPDATE `accounts` SET `saldo` = `saldo` + '0.15' WHERE `id` = '".$username."'");
  • Kurene, dat maakt dus echt niet uit.


    MoBSter,
    belangrijk is dat je namen zorgvuldig geeft, aangezien je met bijv $username gelijk denkt aan een gebruikersnaam van een account en niet aan het id.

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

  • Kurene heeft hier het beste antwoord gegeven zover ikzelf kan zien.
    Backticks (`) zoveel als mogelijk vermijden. Dat phpmyadmin dit doet betekent niet dat ij dit ook moet doen. Verder moet om de veld met een waarde of string een (').


    Over de $username. Ik zou neerzetten $userId. En natuurlijk ook wel beveiligen. Direct een variabele in de database gooien is nooit slim.

  • Mijn mening wat betreft...
    - backticks (`): niet handig als je ooit een niet-mysql database wilt gebruiken, maar als de rest van je queries backticks bevatten, blijf dan consequent of pas ze allemaal aan.
    - quotes: " betekend niets in mysql, ' zul je om bepaalde waarden moeten gebruiken om syntax errors te voorkomen.
    - cijfers: ik zie hier liever geen quotes om heen, aangezien het cijfers zijn en geen strings.
    - variabele: $username hoort een username te bevatten, geen id.
    - veiligheid: $_SESSION['userid'] direct in een query stoppen is geen goed idee, gebruik aub mysql_real_escape_string() om strings onschadelijk te maken, voor cijfers kun je bijvoorbeeld intval() en floatval() gebruiken.

  • Om Darsstar aan te vullen:
    Als je een veldnaam hebt die uit cijfers bevat (eg. "5" of "32995") dan moet je altijd backticks gebruiken.
    Indien je veldnamen ook letters bevatten dan gebruik je beter geen backticks.
    Ook * is niet handig als je alleen een login naam nodig hebt. Je haalt namelijk bij bijv. een user tabel alle velden op, terwijl je er maar één nodig hebt.
    Tevens staat het netter om de tabelnamen per stuk te noemen. Indien je meer dan 15 velden hebt die je allemaal nodig hebt raad ik je wel aan een * te gebruiken.

  • nogmaals mijn dank voor alle input, ik ken er zeker wat mee,


    ga gelijk alle overbodige


    PHP
    "SELECT * FROM.....


    vervangen door


    PHP
    "SELECT veld0, veld1 FROM....


    Is inderdaad netter, en ook sneller...

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!