[PDO] De basis
08-03-2009 16:55
Offline Stuur privëbericht
Orgineel door: Twan

Heey,

Hier een kleine tut over PDO (kort samengevat in het nederlands).

Wat is PDO?

Een soort verbinding, die je heel makkelijk kan wijzigen, voorals je van bijv. mysql af wilt.

Hoe gebruik je PDO?

Voor je het kan gebruiken, moet op de hosting in php.ini PDO 'enabled' zijn.

Code | Selecteer Alles
minimaliseren
1
extension=php_xxx.dll


Zoek bovenstaande op, en zet hierbij:
Code | Selecteer Alles
minimaliseren
1
extension=php_pdo.dll


Ook heb je waarschijnlijk MySql drivers nodig, zie hierover de bron.

Connecten

Een verbinding maken doe je heel makkelijk:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
try
{
    
$conn = new PDO('mysql:host=localhost;dbname=your_db_name;''user''pass');
}
catch(
PDOException $e)
{
    die(
"Could not connect to db: ".$e -> getMessage());
}

Let wel op, dat als het niet kan verbinden, en jij geen goede 'Exception' heb, de passworden en gebruikersnamen die jij gebruikt op de site te zien komen.

Querys
Je heb 2 verschillende querys in PDO:
-> SELECT *.....
-> DELETE, INSERT, UPDATE ....

SELECT doe je zo:
Code | Selecteer Alles
minimaliseren
1
$result $conn -> query("SELECT * FROM table");


In onderstaande code selecteer je elke rij uit een tabel (welke ook word weergegeven):
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
<?php
$result 
$conn -> query("SELECT * FROM table");
 
echo 
"Number of rows: ".$result -> rowCount()."";
while(
$row $result -> fetch())
{
    echo 
"<pre>"print_r($row), "</pre>";
}


Voor de DELETE, INSERT, ed. :
Code | Selecteer Alles
minimaliseren
1
2
$affected $conn -> exec('DELETE FROM table');
echo 
"Deleted ".$affected." rows!";


&quot;Prepared statements&quot;
Het leukste aan PDO is het volgende:
Code | Selecteer Alles
minimaliseren
1
2
$statement $conn -> prepare("DELETE FROM users WHERE name = ?");
$statement -> execute(array($_GET['name']));

Je zet dus een vraagteken neer, deze word door die array omgezet naar &quot;GET-name&quot;

Je zou het bijv. ook zo kunnen doen:
Code | Selecteer Alles
minimaliseren
1
2
$statement $conn -> prepare("DELETE FROM users WHERE name = ? AND id= ?");
$statement -> execute(array($_GET['name'],$_GET['id']));


En je hoeft de $_GET , $_POST of een of andere input niet te beveiligen, want PDO is compleet beveiligd tegen enige SQL-injections. Ook hoef je niet dingen te gebruiken zoals stripslashes();

Dit was een klein stukje PDO.

BRON: RETURN1.NET
Door Lucas van Dijk.
Er werd nog geen reactie geplaatst.