• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07

PDO

  • Frenzo.Brouwer
  • 10 maart 2014 om 10:39
  • Frenzo.Brouwer
    Web Developer
    Ontvangen Reacties
    35
    Berichten
    535
    • 10 maart 2014 om 10:39
    • #1

    Hallo leden,
    De scripting taal PHP bevalt me goed, krijg het steeds beter en beter onder de knie! Alleen zijn er nog wat onduidelijkheden omtrent PDO.
    Waarom zou ik PDO gebruiken en geen MySQLi?
    Als ik een query uitvoer zoals het voorbeeld hier onder; Wat is hier meer veilig aan als het 2e voorbeeld?
    Voorbeeld 1:

    Code
    $query = $pdo->prepare('SELECT * FROM users WHERE gebruiker = :gebruiker');
    $query->bindParam(':gebruiker', $_POST['gebruiker']);$query->execute();


    Voorbeel 2:

    Code
    $query = $db->query("SELECT * FROM users WHERE gebruiker = '".$_POST['gebruiker']."'");


    Hier boven staan 2 voorbeelden, het eerste is PDO het tweede MySQLi. Hoe zorgt het PDO voorbeeld er voor dat het veiliger is tegen SQL-Injecties?
    De code van PDO, is praktiesch het zelfde als MySQLi alleen een aantal nieuwe termen die je moet onthouden! Denk aan; prepare, bindParam, execute, fetct(PDO::FETCH_OBJ), countRow
    Maar toch zie ik het verschil niet?
    Gr,
    Frenzo

    Eigenaar van:
    Online Marketing & Webdesign Bureau - https://marketingmetrics.nl/
    Gaming Plaform - https://onetwogaming.nl/
    Banditi - https://banditi.nl/
    Criminas - https://criminas.nl/

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 10 maart 2014 om 10:48
    • #2

    Bij voorbeeld 2 zet je het variable in de query, deze kan veranderd worden door middel van een SQL Injection, bij voorbeeld 2 worden de variables niet in de query zelf gezet dus moeilijker te veranderen. Wat voorbeeld 1 veiliger maakt.

    Met vriendelijke groet,

    Dees

  • Frenzo.Brouwer
    Web Developer
    Ontvangen Reacties
    35
    Berichten
    535
    • 10 maart 2014 om 11:44
    • #3

    Dus dat is wat PDO automatisch zelf doen, de query veilig maken?

    Eigenaar van:
    Online Marketing & Webdesign Bureau - https://marketingmetrics.nl/
    Gaming Plaform - https://onetwogaming.nl/
    Banditi - https://banditi.nl/
    Criminas - https://criminas.nl/

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 10 maart 2014 om 17:07
    • #4

    Wat je nu hebt gepakt zijn twee voorbeelden waarvan de eerste al een voorsprong heeft op de tweede.

    PDO is een paar opzichten vooral beter dan MySQLI, als voorbeeld dat PDO meer databases ondersteund.
    Alleen zie ik, dat je al bent begonnen met MySQLI. Ik zou dan niet halverwege een project de overstap naar PDO maken, wat je kan doen is net zoals in voorbeeld 1 beginnen met prepared statement.

    Met bijvoorbeeld jouw gegeven voorbeeld wordt het ongeveer zo:

    PHP
    //$query = $db->query("SELECT * FROM users WHERE gebruiker = '".$_POST['gebruiker']."'");
    $stmt = $mysqli->prepare("SELECT id,naam,gebruikersnaam FROM users WHERE gebruiker = ?");
    $stmt->bind_param('s', $_POST['gebruiker']);
    $stmt->exeucte();
    $stmt->store_result();
    $stmt->bind_result($userId, $userName, $userUName);
    $stmt->fetch();
    $stmt->close();

    Met vriendelijke groet,
    Reza.

  • Frenzo.Brouwer
    Web Developer
    Ontvangen Reacties
    35
    Berichten
    535
    • 10 maart 2014 om 19:15
    • #5

    Hallo Reza,

    Bedankt voor je uitleg, al moet ik zeggen ik snap hier dan weer minder van...

    Gr,
    Frenzo

    Eigenaar van:
    Online Marketing & Webdesign Bureau - https://marketingmetrics.nl/
    Gaming Plaform - https://onetwogaming.nl/
    Banditi - https://banditi.nl/
    Criminas - https://criminas.nl/

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 10 maart 2014 om 20:06
    • #6
    Citaat van WebMobiel

    Hallo Reza,

    Bedankt voor je uitleg, al moet ik zeggen ik snap hier dan weer minder van...

    Gr,
    Frenzo

    In het eerste voorbeeld die je liet zien(PDO) gebruik je een PDO prepared statement. Wat ik liet zien in mijn voorbeeld is ook een voorbeeld van een MySQLI prepared statement.

    In MySQLI werkt het helaas 'irritanter' doordat je verschillende methodes erbij moet toevoegen wil je bijvoorbeeld resultaat uit je query halen.
    Standaard(bijvoorbeeld een insert in je DB) is het prepare(), bind_param() en execute(). Dit is nog het zelfde als bij PDO.

    Bij MySQLI komt echter nog het stukje(bijvoorbeeld bij een select voor je DB) dat je jouw resultaat moet 'opslaan'(store_result()). Daarna moet je, wat je eerder via select had gekozen in de query, samenbinden in een variabel(bind_result).
    Om het uiteindelijk nog als resultaat te krijgen moet je nog fetch() gebruiken, en zoals gewoonlijk(volgens mij ook bij PDO) het afsluiten met close()

    Met vriendelijke groet,
    Reza.

  • phpert
    Beginner
    Berichten
    22
    • 10 maart 2014 om 20:18
    • #7
    Citaat van Reza

    Wat je nu hebt gepakt zijn twee voorbeelden waarvan de eerste al een voorsprong heeft op de tweede.

    PDO is een paar opzichten vooral beter dan MySQLI, als voorbeeld dat PDO meer databases ondersteund.
    Alleen zie ik, dat je al bent begonnen met MySQLI. Ik zou dan niet halverwege een project de overstap naar PDO maken, wat je kan doen is net zoals in voorbeeld 1 beginnen met prepared statement.

    Met bijvoorbeeld jouw gegeven voorbeeld wordt het ongeveer zo:

    PHP
    //$query = $db->query("SELECT * FROM users WHERE gebruiker = '".$_POST['gebruiker']."'");
    $stmt = $mysqli->prepare("SELECT id,naam,gebruikersnaam FROM users WHERE gebruiker = ?");
    $stmt->bind_param('s', $_POST['gebruiker']);
    $stmt->exeucte();
    $stmt->store_result();
    $stmt->bind_result($userId, $userName, $userUName);
    $stmt->fetch();
    $stmt->close();


    Beter om in zo'n geval een echt voorbeeld te laten zien, ook om de werking juist uit te leggen

    PHP
    $pdo = new PDO('mysql:dbname=test;host=localhost;charset=utf8', 'root', '');
    
    
    // Query waarbij er géén waardes door de gebruiker opgegeven worden gebruikt
    $result = $pdo->query("SELECT veld FROM tabel WHERE actief = 1");
    return $result->fetch(PDO::FETCH_ASSOC);
    // In een array
    $return = array();
    while ($list = $result->fetch(PDO::FETCH_ASSOC)) {
    	$return[] = $list;
    }
    return $return;
    
    
    // Query waarbij er wél waardes door de gebruiker opgegeven worden
    $statement = $pdo->prepare('SELECT veld FROM tabel WHERE actief = :actief OR veld_twee = :veld');
    $statement->bindValue(':actief', $_GET['actief'], PDO::PARAM_INT);
    $statement->bindValue(':veld', $_GET['veld'], PDO::PARAM_STR);
    $tatement->setFetchMode(PDO::FETCH_ASSOC);
    $statement->execute();
    return $statement->fetch();
    // In een array
    $return = array();
    while($list = $statement->fetch()) {
    	$return[] = $list;
    }
    return $return;
    Toon Meer
  • Frenzo.Brouwer
    Web Developer
    Ontvangen Reacties
    35
    Berichten
    535
    • 11 maart 2014 om 12:31
    • #8

    Thanks iedereen voor de nuttige informatie!!!!!

    Eigenaar van:
    Online Marketing & Webdesign Bureau - https://marketingmetrics.nl/
    Gaming Plaform - https://onetwogaming.nl/
    Banditi - https://banditi.nl/
    Criminas - https://criminas.nl/

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design