Kennischeck blok xx
PDO
Waarom kiezen we voor PDO boven oudere methodes zoals mysql_* of mysqli?
PDO is veiliger en flexibeler. Het helpt je om makkelijker over te stappen naar een andere database (bijvoorbeeld van MySQL naar SQLite).
PDO is het meest recent en modern. PDO wordt verder ontwikkeld en mysqli `minder.
PDO is iets eenvoudiger in gebruikt.
Wat is een DSN in PDO?
DSN betekent "Data Source Name". Dat is een stukje tekst waarin staat met welke database je verbinding maakt.
Waarom is het handig om de verbinding (bijvoorbeeld connection.php) in een apart bestand te zetten?
Zo hoef je niet overal dezelfde code te typen. Als er iets verandert (zoals het wachtwoord), dan hoef je dat maar op één plek aan te passen. Je maakt je code netter, overzichtelijker en makkelijker te onderhouden.
Wat is het verschil tussen de database-instellingen op je eigen laptop en op een echte server?
Op je laptop gebruik je vaak "localhost" en een gebruiker (root) zonder wachtwoord.
Op een echte server is dat niet veilig, dus daar gebruik je andere gegevens. Het is belangrijk dat je die gegevens netjes gescheiden houdt, anders werkt je site straks niet online of wordt hij gehackt.
Wat is het verschil tussen query() en prepare() + execute()?
Met query()
stuur je direct een SQL-opdracht.
Met prepare()
+ execute()
gebruik je een veilige manier waarbij je eerst zegt "wat je ongeveer wilt doen" en daarna de gegevens pas invult. Dat is veiliger, vooral bij gegevens van een formulier.
Hoe helpt prepare() om SQL-injecties te voorkomen?
Een SQL-injectie is als iemand iets raars intypt in een formulier om je database kapot te maken. prepare()
zorgt ervoor dat die invoer niet als SQL-code wordt gezien, maar gewoon als tekst. Daardoor kunnen hackers niks kapot maken.
Hoe haal je meerdere rijen uit een database met PDO?
Je doet eerst $stmt = $conn->query("SELECT ...")
, dan gebruik je fetch()
om één rij te krijgen of fetchAll()
voor alles tegelijk.
fetch()
is handig als je maar één resultaat verwacht, zoals bij een login. fetchAll()
gebruik je als je bijvoorbeeld een lijst van producten wilt laten zien.