Блог-шпаргалка

Картинка

PHP connect to DataBase

Категория -> linux
Обновлено: 2025-03-25

Уходят времена, когда процедурный стиль написания кода, в ненавистной всем пихе, играл ключевую роль. Конечно, на сегодняшний день, ещё очень много проектов работают на лютейшем легаси по разным причинам:

  1. Долбоёбы, которые придерживаются слогана: "Работает - не трогай!"
  2. Отсутствие компетентного разработчика в штате
  3. Скупое отношение руководства к персоналу
  4. Остальные причины более редкие

На моей практике частенько встречаются директора, которые разово нанимают по объявлению людей, которые делают сайты под ключ. Эти люди, по ю-тубовским видосам, разворачивают движок на джумле или вордпрессе или ещё хуже на тильде, прикручивают к нему скин, берут за это от 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, но сейчас он используется по умолчанию и является необязательным.