• Hallo,
    ik ben bezig aan een registreersysteem.
    Ik wil een controle uitvoeren of de gebruikersnaam al bestaat, en als dat zo is het account niet geregistreerd word in de database.
    Maar dit werkt niet echt en er komt altijd een nieuw account in de database, ookal bestaat de gebruikersnaam al.
    Dit is mijn script:

  • Je doet het ook niet op de juiste manier.


    Ik raad de volgende manier aan aan:

    PHP
    $result = mysqli_query($con, SELECT Username FROM users WHERE Username='$username');
    if (mysqli_num_rows($result) > 0) { echo "Gebruikersnaam bestaat al"; }
  • Nog een tip, gebruik PDO, en een algemeen DB connectie bestandje die je include of iets in die richting,


    Wat je nu doet is iemand PDO aanraden, zonder ze de voordelen of nadelen ervan te vertellen, oftewel hij zal dan niet weten waarom hij PDO moet gebruiken.
    Ik zelf ben beide gewend, echter gebruik ik nu meer MySQLI(OO) dan PDO. PDO heeft wel meer voordelen aangezien het meerdere databases ondersteund en ook beter presteert als het gaat om snelheid.


    Verder vind ik jouw stukje code nogal onoverzichtelijk, ik raad je dan ook sterk aan het enigszins aan te passen.
    Ik zou onderstaande aanpassen:

    1. Ik zou persoonlijk 'mee gaan met de tijd' door de switch te gaan maken naar MySQLI OO in plaats van MySQLI procedural, ook is OO sneller te typen i.p.v. procedural.
    2. Wat ook eerder gezegd is, zet jouw database connectie en bijhorende in een apart bestand welke je kan include op elk ander bestand. Ook zou ik voortaan niet zomaar losse errors laten zien aan jouw gebruikers maar eerder werken met een nette afhandeling.
    3. POST variabelen beveilig je alleen met de mysqli_real_escape string, het is veilig genoeg tegen SQL injecties echter zou ik aanraden het nog veiliger op te pakken door meer beveiliging of te gaan werken met prepared statements.
    4. Ik geef zelf de voorkeur om bijvoorbeeld accolades( dit teken: { } ) apart op elke regen te schrijven, wellicht dat dit ook zorgt voor overzichtelijkheid bij jouw script.



    Voor de rest zijn er nog kleine dingen die in mijn oog anders zouden kunnen, bijvoorbeeld if en else zonder hoofdletter...

  • 1) OO is sneller te type dan procedureel?
    Dan heb je het wss enkel voer de naam hoor.
    OO is enkel sneller als je ook echt meerde keren dezelfde acties gebruikt.
    2) PDO bestreert juist niet beter dan mysqli
    Kwa performance is mysql_ dan mysqli en dan pas PDO dus PDO is het minste performance maar het verschil si zo goed als verwaarloosbaar.
    PDO is het 'traagste' (merk je niet echt asl gebruiker tezei je heel veel db acties doet, omdat het zoveel meer mogeleijkheden heeft en ook minder direct met de db spreekt. De mysql_ en ook, mysql i zeggen diorect tege mysql doe dit en bij PDO is daar nopg een tussenstap.

  • 1) OO is sneller te type dan procedureel?
    Dan heb je het wss enkel voer de naam hoor.
    OO is enkel sneller als je ook echt meerde keren dezelfde acties gebruikt.
    2) PDO bestreert juist niet beter dan mysqli
    Kwa performance is mysql_ dan mysqli en dan pas PDO dus PDO is het minste performance maar het verschil si zo goed als verwaarloosbaar.
    PDO is het 'traagste' (merk je niet echt asl gebruiker tezei je heel veel db acties doet, omdat het zoveel meer mogeleijkheden heeft en ook minder direct met de db spreekt. De mysql_ en ook, mysql i zeggen diorect tege mysql doe dit en bij PDO is daar nopg een tussenstap.


    Geen idee waarop je dit nu allemaal baseert...


    1. mysqli_query($con, $sql) of $con->query($sql); Ik prefereer dat laatste omdat het in mijn oog gemakkelijker typen is. Verder bedoelde ik dan ook classes etc dat het typ werk scheelt.
    2. Ik gebruik zelf meer MySQLI... Maar ik weet dat PDO beter is, waarom? http://wooptoo.com/blog/pdo-vs…i-performance-comparison/ is al een voorbeeld dat PDO beter werkt als je praat over vele query's. Ik weet niet waar jij vandaan haalt dat PDO het traagste is.
      Die link die ik heb gegeven geeft dan ook de redenen waarom PDO beter is, op Stackoverflow kun je ook uitgebreide discussies vinden wat alle voordelen en nadelen zijn en welke beter uit de test komt.
  • 1) OO is sneller te type dan procedureel?
    Dan heb je het wss enkel voer de naam hoor.
    OO is enkel sneller als je ook echt meerde keren dezelfde acties gebruikt.
    2) PDO bestreert juist niet beter dan mysqli
    Kwa performance is mysql_ dan mysqli en dan pas PDO dus PDO is het minste performance maar het verschil si zo goed als verwaarloosbaar.
    PDO is het 'traagste' (merk je niet echt asl gebruiker tezei je heel veel db acties doet, omdat het zoveel meer mogeleijkheden heeft en ook minder direct met de db spreekt. De mysql_ en ook, mysql i zeggen diorect tege mysql doe dit en bij PDO is daar nopg een tussenstap.


    Draai alles om wat hier gezegd wordt en het klopt :P

  • Kijk als jij denkt dat OO sneller is om te typen, dan ben je fout.
    OO is juist meer werk als je het maar 1 of soms zelfs 2 keer nodig hebt.
    Dit neemt niet weg dat OO 'the way to g'o is voor leesbaarheid, onderhoudbaarheid, ...


    En qua performance heb ik even nog wat bekeken en er zijn verschillende testen gedaan. De testen die ik betrouwbaarder vind lijken, geven mij gelijk. (De rest spreekt zich niet uit of ze gewone query's doen of prepared query's die je niet hebt in mysql_.


    Reactie aangepast door L.Kok, reden: leesbaarheid verbeteren.

    Check mijn projecten op stijnhau.be

    Bewerkt één keer, laatst door L.Kok ().

  • @Wmdiensten


    Het scheelt inderdaad heel weinig, dus eigenlijk verwaarloosbaar. Je moet eigenlijk de overweging maken tussen opties en snelheid. In veel gevallen kies je dus voor opties, tenzij je grote hoeveelheden queries moet uitvoeren.


    Er zijn meer van dit soort kleine performance dingetjes. Je kan bijvoorbeeld beter echo dan print gebruiken en bij echo beter single quotes dan dubbele quotes.

Participate now!

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