Lab / php

PHP: Подключение к базе данных через драйвер PDO

Сегодня поговорим о работе с базой посредством такого полезного инструмента как PDO. PDO в отличае от MYSQLi имеет огромное преимущество — работа с несколькими типами баз данных, такими как MySQL, MSSQL, MySQLite итд без изменения логики всего приложения.

Примеры подклчения с различными типами БД:

try { 
 # MS SQL Server и Sybase через PDO_DBLIB 
 $db = new PDO("mssql:host=$host;dbname=$dbname", $user, $pass); 
 $db = new PDO("sybase:host=$host;dbname=$dbname", $user, $pass); 
 
 # MySQL через PDO_MYSQL 
 $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
 
 # SQLite 
 $db = new PDO("sqlite:my/database/path/database.db"); 
} 
catch(PDOException $e) { 
 echo $e->getMessage(); 
}

PDO (PHP Data Objects) прекрасно вписывается в парадигму ООП так как данные здесь по умолчанию предоставляются как объекты.

Давайте по подробнее рассмотрим как тут всё устроенно. Сначала разберём подключение, для того, что бы подключиться к базе нужно создать объект PDO и в качестве агрументов передать ему тип базы данных, хост, логин, пароль и имя БД:

$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpassword);

Теперь давайте попробуем сделать выборку из БД с помощью PDO:

$sql = "SELECT * FROM articles";
$result = $db->query($sql);
$articles = $result->fetchAll(PDO::FETCH_ASSOC);

Ну и выведем всё это на страницу:

foreach ($articles as $article) {
 echo "{$article['id']} {$article['title']} {$article['content']}. <hr />";
}

Теперь давайте посмотрим как тут устроенна встаыка данных в БД, подготавливаем запрос вставки:

$sql = "INSERT INTO articles (title, content) VALUES (:title, :content)";
$stmt = $db->prepare($sql);

Не забудьте в переменные $title и $conent передать значения перед выполнением следующего кода:

$stmt->bindValue(':title', $title);
$stmt->bindValue(':content', $pcontent);
$stmt->execute();

Так-же мы можем получить ID последней добавленной в базу строки:

$db->lastInsertId()