Уходят времена, когда процедурный стиль написания кода, в ненавистной всем пихе, играл ключевую роль. Конечно, на сегодняшний день, ещё очень много проектов работают на лютейшем легаси по разным причинам:
- Долбоёбы, которые придерживаются слогана: "Работает - не трогай!"
- Отсутствие компетентного разработчика в штате
- Скупое отношение руководства к персоналу
- Остальные причины более редкие
На моей практике частенько встречаются директора, которые разово нанимают по объявлению людей, которые делают сайты под ключ. Эти люди, по ю-тубовским видосам, разворачивают движок на джумле или вордпрессе или ещё хуже на тильде, прикручивают к нему скин, берут за это от 50-ти до 100 тысяч рублей и всё =) Естественно, когда что-то случается или необходимо внести какие-либо правки, эти горе-программисты разводят руками.
На сегодняшний день широкое применение и достойную нишу занял PDO (PHP Data Objects). Вышел он в свет в ноябре 2005 года с версией PHP 5.1.
В этом посте мы сперва набросаем, а потом разберём каждый параметр подключения к базе данных.
<?php $host = 'localhost'; $db = 'Имя БД'; $usr = 'username'; $pwd = 'password'; $chrst = 'utf8'; $opt = [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]; $dsn = "mysql:host=$host;dbname=$db;charset=$chrst"; try { $dbconnect = new PDO($dsn, $usr, $pwd, $opt); } catch (PDOException $e) { echo 'Ошибка: ' . $e->getMessage(); }
Сопсна в данном примере всё до безобразия примитивно и просто. Первые пять переменных опустим, так как в них и ежу понятно что происходит, а вот переменную opt прокомментирую. Параметр, указанный в ней, определяет метод выборки по умолчанию, а значение возвращает краткий результат в виде ассоциативного массива.
В переменной $dsn мы готовим строку подключения, ну и создаём сам объект подключения, используя конструкцию try-catch для того, чтоб если что неправильно, отловить ошибку
До выхода в свет 8-ой версии PHP, в параметрах подключения обязательно надо было использовать PDO::ATTR_ERRMODE со значением PDO::ERRMODE_EXCEPTION, но сейчас он используется по умолчанию и является необязательным.