Сегодня я хочу, чтобы вы узнали, как правильно установить соединение с базой данных SQL в проекте PHP.
Предварительные требования
- Знание языка PHP
- Иметь локальную среду PHP и MySQL/MariaDB
- [Необязательно] Имейте приложение для управления базой данных с графическим интерфейсом пользователя (
phpmyAdmin
или другие), если у вас его нет/он вам не нужен, вы можете использовать CLI для подключения к базе данных
Цель
Я видел много руководств, в которых все еще учат устаревшим методам подключения к базе данных MySQL в PHP. Я хочу, чтобы это прекратилось. Итак, моя цель в этом руководстве — научить вас современному и безопасному способу подключения к любой базе данных SQL в PHP с помощью метода PDO.
В этом руководстве я буду работать с базой данных MySQL. . Нет большой разницы между MySQL и системами баз данных, подобными SQL. Так что не стесняйтесь использовать любой, который у вас есть.
Давайте начнем наш тур.
Рабочая область
Создайте папку для проект (мой — php-pdo
):
mkdir php-pdo
Добавить index.php
, config.php
и connection.php
:
touch index.php config.php connect.php
Также создайте базу данных ( test
):
СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ test;
Подключение к базе данных с помощью PDO
Чтобы подключиться к базе данных, вы можете используйте либо расширение для конкретной базы данных, например MysQLi для MySQL, либо объекты данных PHP (также известные как PDO). Преимущество использования PDO в том, что его можно использовать для подключения к любой базе данных. По этой причине в этом руководстве мы будем использовать PDO.
Пришло время начать использовать PDO. В connection.php
создайте экземпляр PDO следующим образом:
Php $ connection = new PDO ();
Примечание :
Вам кажется странным синтаксис PDO? Не бойтесь этого. Просто следуйте за мной, чтобы узнать, как его использовать.
PDO ()
принимает эти четыре параметра:
- DSN (имя источника данных) : тип базы данных, имя хоста, имя базы данных (необязательно)
- логин хоста
- пароль хоста
- дополнительные параметры
Учитывая информацию о нашей базе данных, давайте заменим эти параметры их реальными значениями:
php $ connection = new PDO ("mysql: host = localhost; dbname = test "," root "," ", [PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION];
Примечание
- Строка
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION
указывает PDO на выдачу исключения в случай ошибки.- Возможно, вы заметили, что я не закрываю свой тег PHP. Это необязательно, и иногда лучше не включать его, если последнее, что есть в вашем файле, — это PHP-код.
Мы профессионалы, давайте писать код как профессионалы.
Отредактируйте код
Наше соединение работает нормально, но мы все еще можем провести рефакторинг кода. Давайте упростим нашу строку подключения:
$ connection = new PDO ($ dsn, $ username, $ password, $ options);
В config.php
мы добавляем всю информацию о базе данных:
$ host = "localhost"; $ username = "root" ; $ password = ""; $ dbname = "test"; $ dsn = "mysql: host = $ host; dbname = $ dbname"; $ options = [PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION];
Примечание :
Если вы используете базу данных, отличную от MySQL, вам необходимо изменитьmysql
в$ dsn = "mysql: host = $ host; dbname = $ dbname"
на имя вашей базы данных (например,pgsql
).
Теперь мы можем вызвать config.php
в connection.php
.
phpfunction db_connect () {требуется "config.php"; $ connection = новый PDO ($ dsn, $ username, $ password, $ options); return $ connection;}
Мы создали функцию, которая возвращает объект подключения к базе данных. Теперь пора:
Использовать строку подключения
В index.php
мы можем использовать db_connect ()
выглядит так:
phprequire "connection.php"; $ connection = db_connect ();?> Здравствуйте Мир
Браузер напечатает Hello World
, если все в порядке.
Но что происходит в случае ошибки?
Хороший вопрос. Давайте посмотрим, как:
обрабатывать исключения
Проще говоря, исключения — это просто ошибки. Помните, что мы установили атрибуты PHP для выдачи ошибок как исключений ( PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION
).
Сначала перейдите к config.php
и что-то неправильно поставил. Допустим, я ввел пароль базы данных как blablabla . Теперь в браузере у вас будет следующее:
Как вы можете видеть на изображении выше, приложение обнаружило ошибку. В нем дается описание ошибки, а также строка, в которой может быть обнаружена проблема. Это может быть интересно, если мы все еще разрабатываем наше приложение, но в производственной среде это связано с высоким риском безопасности. Мы не хотим раскрывать нашим посетителям слишком много информации об ошибке. Вы можете заметить, что ошибка приложения многое говорит о нашем коде: файле, строке подключения и строке.
Чтобы исправить эту проблему, нам нужно использовать try/ блок catch
:
try {require "config. php "; $ connection = new PDO ($ dsn, $ username, $ password, $ options); return $ connection;} catch (PDOException $ e) {die ($ e-> getMessage ());}
Вкратце, приведенный выше фрагмент сначала попытается подключиться к базе данных, и если он обнаружит ошибку, он перехватит ее и напечатает явное сообщение об ошибке.
Заключение
В этом руководстве мы научились писать скрипт для подключения к базе данных SQL на PHP как профессионал, используя:
- PDO
-
try/catch
для обработки ошибок.
Вы можете найти весь код здесь.
Спасибо за обучение вместе со мной. !