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()