Доступ к БД через PDO


// Объект PDO - очень удобен, поскольку предоствляет
// единый интерфейс к разным базам данных

error_reporting(E_ALL);

$dsn1 = 'sqlite:test.db';
$dsn2 = 'mysql:dbname=testdb;host=127.0.0.1';
$dsn3 = 'pgsql:host=localhost;dbname=test';


// Соединение с БД
$dbh = new PDO($dsn1);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Параметризованная выборка 1
$sql = 'SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();

// Параметризованная выборка 2
$sql = 'SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?';
$sth = $dbh->prepare($sql);
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();

// Параметризованная вставка
$sql = 'INSERT INTO fruit (colour, calories) VALUES (?, ?)';
$sth = $dbh->prepare($sql);
$sth->execute(array('red',125));
$id = $dbh->lastInsertId();

// Удаление
$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'") or die(print_r($db->errorInfo(), true));

// Построчный доступ
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);