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