В этом материале мы разберем основы работы с базами данных MySQL для начинающих. Рассмотрим как создавать базу данных MySQL, как соединяться с Базой Данных и как вставлять в неё данные через PHP. Материал будет состоять из нескольких частей и в дальнейшем мы рассмотрим подробнее каждый блок — MySQLi, PDO, RedBean. А сегодня мы рассмотрим информацию, которая нам даст понимание как подступиться к этой теме.
Создание БД
Этот шаг необходим, если у вас нет базы данных MySQL. Если вы являетесь пользователем какого либо хостинга, то вы можете легко создать новую Базу данных (далее — БД) через Панель управления.
Некоторые моменты я буду демонстрировать с использованием Панели управления моего старого хостинга. Даже если вы используете другие хостинговые компании, то, как правило, все шаги будут очень похожими и довольно стандартными:
1. Найдите меню «MySQL» или «Базы данных MySQL» или раздел «Базы данных».
2. Заполните необходимые поля и нажмите «Создать» или «Добавить», как на картинке ниже.
База данных создана. Однако имейте в виду, что это пустая база данных, и вам нужно будет заполнить нужные поля, прежде чем вы сможете управлять БД.
Также вам нужно запомнить необходимую информацию — имя базы данных, логин пользователя и пароль. Эта информация будет использоваться позднее.
Как правило одни хостинги создают пользователя автоматически при создании БД, а в других нужно создать пользователя самому. В первом случае логин пользователя и имя БД скорее всего совпадают.
Существует два метода подключения к базе данных MySQL с помощью PHP: MySQLi и PDO. О них подробнее мы поговорим в следующих материалах, а ниже немного их обсудим.
Ошибки и проверка подключения
Чтобы проверить, успешно ли соединение, получите доступ к вашему домену следующим образом: yourdomain/databaseconnect.php. Если вы называете PHP-файл каким-то другим именем, убедитесь, что он изменен соответствующим образом.
Вы увидите «Подключено успешно» (Connected successfully) или варианты этого сообщения, если все работает без проблем.
Теперь, если соединение не было успешным, вы увидите другое сообщение. Сообщения об ошибках выглядят несколько иначе для MySQLi и PDO.
Incorrect Password Error
Incorrect Password Error или «Ошибка пароля».
Эта ошибка возникает, если мы меняем пароль или какие-либо учетные данные в коде PHP (но не меняем их в реальной базе данных).
Если вы видите сообщение «Доступ запрещен» (Access denied) или «Не удалось подключиться к базе данных» (Could not connect to database), сопровождаемый «(с использованием пароля: ДА)» в конце (using password: YES), то первое, что необходимо сделать — это проверить сведения о базе данных. Возможно, здесь есть опечатка или отсутствует какая-то деталь.
Cannot Connect to MySQL Server
Cannot Connect to MySQL Server или «Не могу подключиться к серверу MySQL».
Если вы получаете «Can’t connect to MySQL server on ‘server’ (110)» в MySQLi, это означает, что скрипт не получил ответа от сервера. Это происходит, когда мы устанавливаем «server» вместо «localhost» в качестве имени $servername
, и это имя не распознается.
Сообщение об ошибке в PDO будет выглядеть как «Connection failed: SQLSTATE[Hy000] [2002]«, за которым следует более подробная информация о том, что хост My SQL не был найден. Но способ устранения неполадок такой же, как и выше.
И, конечно же, всегда важно помнить одно золотое правило поиска и устранения неисправностей: проверять журнал ошибок вашего сайта.
Журнал можно найти в той же папке, где запущен скрипт. Например, если мы запускаем скрипт в public_html, то находим error_log в той же папке.
В любом случае — проконсультируйтесь со своим хостинг-провайдером, если что-то пошло не так.
На данном этапе мы узнали самые базовые знания о том, как подключить PHP-скрипт к базе данных MySQL, используя MySQLi и PHP Data Objects (PDO).
Эта информация полезна тем, кто только начинает веб-разработку. Подключение к базе данных — это первый, самый важный шаг при работе с более сложными скриптами и конфигурациями.
Напишите в комментариях ниже, если вы столкнулись с какой-либо проблемой, следуя этому руководству. А мы переходим к тому, как вставлять данные в базу данных MySQL через PHP.
Вставка данных
Рассмотрим как вставлять (INSERT) данные в базу данных MySQL в PHP используя два метода — MySQLi и PDO.
Как и в начале материал, надеюсь, что вы не потеряли доступ к панели управления хостингом.
Создание таблицы
Сначала мы должны создать таблицу для ваших данных. Если вы уже создали ее, прокрутите вниз, чтобы перейти к следующему разделу. Создание таблицы — это простой процесс, который вы можете сделать с помощью phpMyAdmin, который расположен в панели управления вашего хостинга.
Почти на любом хостинге можно увидеть маленький значок phpMyAdmin.
После входа на страницу phpMyAdmin вы должны увидеть что-то похожее на это:
Мы создадим таблицу под названием Students для нашей базы данных u104357129_name. Вы можете создать новую таблицу, нажав на кнопку «Create Table» (рус. — создать таблицу), расположенную внизу страницы.
После этого вы будете перенаправлены на новую страницу, где сможете ввести всю необходимую для вашей таблицы информацию:
Поскольку это простая настройка, для получения дополнительной информации о структуре таблицы / базы данных и о том, какие настройки вы можете использовать с столбцами, обратитесь к официальной документации phpMyAdmin.
А пока вот несколько объяснений используемых нами столбцов:
- Name (имя) — имя вашей колонки. Оно будет отображаться в верхней части таблицы.
- Type (тип) — тип данных. Вы можете задать
int
,varchar
,string
и многое другое. Например, мы выбралиvarchar
, потому что нам нужно ввести имя строкового типа (который использует буквы, а не цифры). - Length/Values (длина/значение) — используется для задания максимальной длины, которую может иметь запись в этой колонке.
- Index. Для поля «ID» мы использовали индекс «Primary«. При создании таблицы рекомендуется иметь один столбец ID. Он используется для пересчета записей таблицы и необходим при настройке отношений с таблицами. Мы также отметили «A_I», что означает «Auto Increment«. При этом будут автоматически создаваться к записи — 1, 2, 3, 4…
Нажмите «Сохранить» (Save), и ваша таблица будет создана.
Есть два метода, которые вы можете использовать для ВСТАВКИ (INSERT) данных в вашу базу данных MySQL. Метод PHP MySQLi и метод объекта данных PHP или PDO (PHP Data Object). О двух разных методах мы поговорим ниже.
PDO
PDO обозначает PHP Data Object (объект данных PHP). В отличие от MySQLi, PDO ориентирована только на объект и поддерживает ряд различных типов баз данных, использующих PHP, таких как MySQL, MSSQL, Informix и PostgreSQL.
Одна из наиболее важных функций, которые оба варианта поддерживают, — это подготовленные операторы (англ. — prepared statements), которые ускоряют время, необходимое MySQL для выполнения одного и того же запроса несколько раз. Это также используется для предотвращения SQL-инъекции при внесении изменений в базу данных.
Какой бы метод вы ни использовали, вам потребуется правильная информация, чтобы вы могли подключиться к созданной вами базе данных MySQL. Здесь вам пригодятся ранее сохраненные данные к MySQL.
Вам также потребуется правильное имя сервера или имя хоста для конфигурации. В большинстве хостингов, используется localhost в качестве имени хоста своего сервера MySQL если вы загрузили свой PHP-скрипт на тот же сервер, где и база данных.
Напротив, если вы подключаетесь к базе данных из удаленного места (например, со своего компьютера), вам придется использовать IP-адрес сервера MySQL. Для получения дополнительной информации обратитесь к своему хостинг-провайдеру, чтобы он мог предоставить вам правильную информацию о том, что использовать в качестве имени хоста.
Итак. Включите драйвер PDO_MYSQL в файле php.ini для подключения к базе данных MySQL в PHP через PDO.
Создайте экземпляр класса PDO для установления соединения с базой данных MySQL.
Используйте конструктор PDO или метод setAttribute()
для установки стратегии обработки ошибок.
MySQLi
MySQLi расшифровывается как MySQL Improved. Это эксклюзивное расширение MySQL, которое добавляет новые функции в интерфейс базы данных MySQL. MySQLi является как процедурным, так и объектно-ориентированным, причем первый является атрибутом, унаследованным от более старой версии MySQL.
Оригинальный MySQL разбивает задачу на линейные, пошаговые процедуры, что затрудняет модификацию, так как код нужно редактировать сверху. Между тем, MySQLi видит данные как набор взаимозаменяемых объектов с функциями, что позволяет пользователям легко добавлять или удалять данные.
RedBeanPHP
RedBeanPHP — это ORM (англ. — Object-Relational Mapping или объектно-реляционное отображение) библиотека и технология, которая делает более простым процесс взаимодействия с реляционной базой данных, сохранение объектов в нее и извлечение.
Данная технология позволяет преобразовывать несовместимые типы моделей в Объектно-Ориентированном Программировании (ООП), в частности, между хранилищем данных и объектами программирования, т.е. RedBeanPHP ORM сама заботится о преобразовании данных между двумя несовместимыми состояниями.
Для работы с RedBeanPHP требуется версия PHP не ниже 5.3.4.
Основные моменты про данную библиотеку:
- использует драйвер PDO,
- защищает от SQL- инъекций,
- работает с MySQL, MariaDB, PostgreSQL, SQLite, CUBRID.
Как мы сказали выше — технология ORM обеспечивает способы задания связи объектов и Реляционной Системой Управления Базой Данных (РСУБД) и бывает в виде двух моделей — Data Mapper и Active Record. RedBeanPHP работает по первой модели в которой объект записи называется бином, т.е. одна запись в таблице Базы Данных и есть один бин, а один бин по сути — это один массив.
- Автор рекомендует использовать для установки phar-архив, поскольку он содержит основные плагины и прост в обращении.
- Автор отказывается предоставлять возможность установить RedBeanPHP через Composer начиная с версии 4.0, но более ранние версии через Composer установить возможно.