Базы данных (БД, Database, db) широко применяются для структурирования и хранения информации. Они важны для успешной работы современных web-сайтов, причем используются для хранения данных и на тех сайтах, которые написаны на PHP. Таким образом, на практике databases применяют:
— для сохранения пользовательских данных, полученных с помощью форм регистрации;
— для проверки, существует ли конкретный аккаунт в системе, какие у него права доступа (access);
— для организации поиска по страницам сайта;
— для хранения комментариев;
— для хранения всевозможного контента (статей, изображений, медиафайлов) и многих других данных (data).
Но прежде, чем выполнить какую-нибудь операцию с записями, находящимися в БД, нужно сначала к этой БД подключиться.
Краткое отступление
Традиционно, язык программирования PHP поддерживает работу с такой базой данных, как MySQL (это СУБД, поддерживающая структурированный язык запросов SQL). Для работы с базой данных MySQL в PHP встроены специальные функции, то есть необходимые возможности предусмотрены заранее. Эти функции позволяют:
— выполнять запросы и получать результаты;
— обрабатывать ошибки;
— читать и записывать данные;
— успешно и эффективно работать с популярной СУБД.
При подключении к MySQL соответствующий сценарий исполняет запрос и показывает результат запроса. Но самое главное заключается в том, что для работы с СУБД MySQL разработчику не придется ничего специально устанавливать, так как все нужное будет сразу доступно и включено в стандартную поставку PHP.
Подключение к database на PHP
Выполнить подключение к серверу БД MySQL можно несколькими способами:
- с помощью объектно-ориентированного подхода MySQLi;
- с помощью процедурного подхода MySQLi;
- используя технологию PDO;
- используя способ подключения для старых версий PHP (имеются в виду версии до PHP 5).
Все вышеперечисленные варианты дают возможность выполнить ту же задачу. То есть выбор наиболее подходящего варианта осуществляется на основании:
— условий текущей разработки;
— PHP-версии;
— субъективных предпочтений.
Но какой бы метод выбран не был, важно иметь основную информацию как о database, так и нюансах доступа (access) к ней. Что подразумевается под основной информацией:
- сервер размещения. Когда разработка проекта ведется на локальном сервере, указывается значение localhost (аналогичная ситуация в большинстве случаев справедлива и тогда, когда вы пользуетесь хостингом);
- login и password пользователя, имеющего доступ (access). Когда работы проводятся на локальном сервере, юзер может быть root и с пустым паролем;
- имя базы данных.
Таким образом, заданный набор переменных в PHP выглядит следующим образом:
MySQLi-подключение
При использовании этого способа создается экземпляр класса mysqli. В процессе создания подключения в параметрах задается информация о сервере, а также о доступах подключения и имени определенной БД, задаваемой переменными. Данные можно указать и строкой (row), то есть без использования переменных, однако вывод параметров в едином разделе либо конфигурационном файле повышает удобство работы с проектом.
Процедурный подход к применению MySQLi
Для некоторых разработчиков более понятна и привычна работа в процедурном формате. Если это так, есть возможность задействовать тот же метод, однако с другой синтаксической реализацией. Когда может пригодиться подобное решение? К примеру, если осуществляется перенос старого MySQL-проекта.
// выполняем подключение
$db = mysqli_connect($db_host, $db_user, $db_pass, $db_name)
or die('Error: подключение выполнено не было.'); // сообщение о том, что произойдет ошибка
// операции с database, к примеру:
$my_data = mysqli_query($db,"SELECT * FROM my_table");
// завершаем подключение
mysqli_close($db);
Подключаемся к БД средствами PHP Data Objects
Неплохое решение при работе с web-проектом — использование технологии PHP Data Objects (PDO). В чем плюс этой технологии? Да хотя бы в том, что появляется возможность работать с разными БД, не меняя основной код.
Следует добавить несколько слов и о выборке данных в PDO. Делать это можно с помощью:
- Ассоциативного массива. PDO::FETCH_ASSOC обеспечивает возвращение массива с названиями столбцов в виде ключей.
- Объекта. PDO::FETCH_OBJ обеспечивает возвращение анонимного объекта со свойствами, которые соответствуют именам столбцов.
Метод для старых версий PHP
Возникают ситуации, когда надо поработать со старыми версиями либо с достаточно древними проектами. Это значит, что надо иметь некое представление и об этом подходе. Его реализация схожа с процедурным подходом MySQLi и является, по сути, его предыдущей версией.
Также давайте приведем пример добавления новой записи (insert into) в таблицу БД с помощью функции mysql_query()
. Она может применяться также и для удаления, изменения и выборки данных посредством запроса SQL. Аргументом функции является строка с запросом. В результате возвращается идентификатор запроса.
<html>
<head>
<title>Добавляем новую запись в нашу таблицу</title>
</head>
<body>
<?php
$db = «sample»;
$link = mysql_pconnect ();
if ( !$link )
die («Подключение к MySQL невозможно!»);
mysql_select_db ( $db ) or die («Нет возможности открыть $db»);
$query = «INSERT INTO books
VALUES (‘111-2222-33-4’, ‘Иванов Иван’,
‘Руководство по PHP’, ‘333’, ‘5’)»;
mysql_query ( $query );
mysql_close ( $link );
?>
</body>
</html>
Какой тип соединения с сервером выбрать?
Выбор должен быть обоснованный (based). Важно понимать, что технология подключения подбирается программистом с учетом условий проекта, личных предпочтений, а также удобства применения. То есть надо быть в курсе проектных рамок и перспективы проекта. И не стоит применять устаревшие технологии и решения, когда существует возможность использовать что-нибудь более новое и эффективное.
Для небольшого проекта, для которого не планируется сложное расширение, может быть вполне достаточно MySQLi. Вдобавок к этому, объектно-ориентированный подход позволит вам структурировать проект.
Если разрабатываемая система будет динамически развиваться и расширяться, может возникнуть необходимость в замене database, что позволит работать с повышенными объемами записей. В таком случае предпочтительнее PDO. В дальнейшем разработчику не придется менять большую часть существующего кода в связи с обновлениями.
Источники:
- https://space-base.ru/library/php/podklyuchenie-bazy-dannyh-mysql-v-php;
- https://htmlacademy.ru/tutorial/php/mysql;
- https://htmlweb.ru/php/mysql.php.