• 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

  • Fallen Kingdom Game

    gozmeu 27 juli 2026 om 23:49
  • Crimora.nl

    Dennii 11 juli 2026 om 13:13
  • RPG game gebouwd met AI

    zwpgangster 9 juli 2026 om 11:25
  • (Verkoop) Criminals

    Syntax 5 juli 2026 om 13:22
  • Het Grote Vibe Code Topic

    Syntax 30 juni 2026 om 11:54
  • Ictscripters Chat

    Jeffrey.Hoekman 26 juni 2026 om 16:21
  • Het oorspronkelijke Criminals Script

    Jeroen.G 24 juni 2026 om 09:21
  • StraatBaas is back, maar hoe?!

    Syntax 17 juni 2026 om 10:28

Marktplaats

  • 303 Nieuwe Domeinnamen Juli 2026

    shiga 1 augustus 2026 om 13:56
  • Straatbaas.eu – complete Nederlandstalige en Engelstalige online maffia-RPG

    Syntax 28 juli 2026 om 15:47
  • 306 Nieuwe Domeinnamen Juni 2026

    shiga 1 juli 2026 om 13:39

PDO

  • Frenzo.Webservice
  • 10 maart 2014 om 10:39
  • Frenzo.Webservice
    Web Developer
    Ontvangen Reacties
    36
    Berichten
    541
    • 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

    Helpt bedrijven met groeien :)

  • 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.Webservice
    Web Developer
    Ontvangen Reacties
    36
    Berichten
    541
    • 10 maart 2014 om 11:44
    • #3

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

    Helpt bedrijven met groeien :)

  • 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.Webservice
    Web Developer
    Ontvangen Reacties
    36
    Berichten
    541
    • 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

    Helpt bedrijven met groeien :)

  • 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.Webservice
    Web Developer
    Ontvangen Reacties
    36
    Berichten
    541
    • 11 maart 2014 om 12:31
    • #8

    Thanks iedereen voor de nuttige informatie!!!!!

    Helpt bedrijven met groeien :)

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Quanscient ontvangt €10M om AI- en kwantum-native hardware engineering te bevorderen - Tech.eu

    ICTscripters 27 mei 2026 om 12:03
  • Datalek bij leverancier Canvas - Universiteit van Amsterdam

    ICTscripters 10 mei 2026 om 12:03
  • Data privacy in 2026: Hoe de naleving van GDPR verandert

    ICTscripters 8 mei 2026 om 12:16

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

  • 3 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