PDO - Verbinden met verschillende databases

  1. Inleiding
  2. Gebruik van de PDO extensie
  3. Uitvoeren van queries
  4. Foutafhandeling
  5. Prepared statements
  6. Transacties
  7. Slotwoord en referenties
  8. Reacties op deze tutorial

Uitvoeren van queries

Nu we weten hoe we verbiding maken met een database, kunnen we verder gaan met het uitvoeren van queries. De PDO klasse heeft hiervoor twee methodes, genaam query() en exec(), beschikbaar.

Er zit een klein verschil in werking van deze twee methodes. De eerste, query(), voert enkel de query uit en geeft een resultaat terug. De tweede daarentegen voert de query uit en geeft daarnaast het aantal aangepaste rijen van een INSERT, UPDATE of DELETE query terug.

Voorbeeld 7: Een SELECT query
Code
1
2
3
4
5
6
7
8
9
10
11
<?php
$db 
= new PDO('mysql:host=localhost;dbname=test','user','password');

$sql "SELECT naam FROM tabel";
$results $db->query($sql);

foreach(
$results as $row)
{
    echo 
$row['naam'].'<br>';
}
?>

Allereerst maken we een nieuwe verbiding door een nieuwe instantie van de PDO klasse aan te maken. Vervolgens voeren we met de query() methode een SQL query uit. De resultaat set kunnen we daarna uitlezen met een foreach loop.

Voorbeeld 8: Een UPDATE query
Code
1
2
3
4
5
6
7
8
<?php
$db 
= new PDO('mysql:host=localhost;dbname=test','user','password');

$sql "UPDATE tabel SET naam = 'Pieter' WHERE naam = 'Piet'";
$affected_rows $db->exec($sql);

echo 
'Aantal aangepaste rijen: '.$affected_rows;
?>

Nu voeren we de query uit met de exec() methode die als resultaat dus een aantal aangepaste rijen teruggeeft. Op deze manier kun je dus direct controleren of er wel wat gewijzigd is.

Bovenstaande queries zijn uitgevoerd op een MySQL database. Maar zoals ik al eerder vermelde kan deze zelfde manier toegepast worden op andere databases als PostgreSQL of SQLite.

Voorbeeld 9: Een INSERT query
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$db 
= new PDO('mysql:host=localhost;dbname=test','user','password');

$sql "
    INSERT INTO tabel (naam)
    VALUES ('Jan')
    "
;
    
$results $db->exec($sql);
$insert_id $db->lastInsertId();

echo 
'ID van laatst ingevoegde record: '.$insert_id;
?>

Vanzelfsprekend ziet een INSERT query er precies hetzelfde uit. Vaak wil je na een INSERT query het id van het laatst ingevoegde record weten. Met PDO kun je dat achterhalen met de lastInsertId() methode zoals te zien is in het voorbeeld.

Natuurlijk moeten we niet vergeten om de in te voegen variabelen te beveilgen om SQL injectie te voorkomen. Waar we normaal altijd mysql_real_escape_string() zouden gebruiken, kunnen we nu de quote() methode van de PDO klasse gebruiken.

Voorbeeld 10: Beveiligen van variabelen
Code
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Gegevens uit een gepost formulier verwerken
$db = new PDO('mysql:host=localhost;dbname=test','user','password');

$naam $db->quote($_POST['naam']);
$sql "
    INSERT INTO tabel (naam)
    VALUES ('"
.$naam."')
    "
;
    
$db->exec($sql);
?>

Vorige Volgende