Взаимодействие PHP и MySQL. Подключение к базе данных MySQL.

Все, что нам нужно это созданная база данных. Например мы создали БД в phpMyAdmin или через cli mysql. Имеем название базы данных MySQL, имя пользователя этой базы данных, пароль. Язык PHP априори поддерживает работу с базой данных MySQL. Вот он настолько замечательный, что его встроенные функции для работы с MySQL позволяют просто и эффективно работать с этой нашей базой данных. А именно выполнять любые запросы, читать и записывать данные, обрабатывать ошибки.

Насколько бы сложными или простыми будут ваши сценарии все они по сути  состоят из простых шагов (шаги работы с базой данных MySQL):

  1. Подключиться к нужной базе данных, используя известные имя базы, имя пользователя и пароль.
  2. Убедиться, что подключение прошло успешно, ошибок нет, сервер БД доступен.
  3. Сформировать правильный SQL запрос (например, на чтение или запись каких-либо данных).
  4. Отправить запрос и убедиться, что данные получены.
  5. Обработать полученные данные из базы данных MySQL.
  6. Использовать полученные данные в ваших целях.

mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык полную поддержку баз данных MySQL. Приходите на любой форум и найдите инструкции по подключении с помощью PDO. Вам будут говорить, что mysqli — фу, pdo — форевер. Ну такое себе. Современный mysqli вполне безопасный при правильном использовании.

Перед началом работы с данными внутри MySQL, нужно открыть соединение с сервером базы данных.

В PHP это делается с помощью стандартной функции.

mysqli_connect()

 

Функция возвращает результат — ресурс соединения. Данный ресурс используется для всех следующих операций с MySQL.

Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:

  • Адрес сервера БД;
  • Логин;
  • Пароль.

 

Если вы следовали стандартной процедуре установки MySQL или используете OpenServer, то адресом сервера будет localhost, логином — root.

Для примера будем подключаться к базе данных на хостинге. Представим, что мы создали базу данных и назвали ее db_users, адрес у нее localhost, пароль — супер крипто стойкий 12345, да и чего там, давайте уж 123456! И пусть имя пользователя совпадает с именем БД.

Базовый синтаксис функции:

mysqli_connect()
mysqli_connect(<адрес сервера>, <имя пользователя>, <пароль>, <имя базы данных>);

 

В нашем случает это будет выглядеть как:

mysqli_connect("localhost", "db_users", "123456", "db_users");

 

Создадим файлик — обработчик подключения к базе данных. Внутри пишем.

Дальше идем. После соединения с БД нужно выполнить проверку, что оно было успешным.

Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отклонять новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому проверка эта является хорошей практикой.

Соединение с MySQL устанавливается один раз в сценарии, а затем используется при всех запросах к БД.

Результатом выполнения функции будет значение специального типа — ресурс.

mysqli_connect()

Если подключение к MySQL не удалось, то функция mysqli_connect() вместо ресурса вернет логическое значение типа «ложь» — false.

И еще один момент. На некоторых хостингах это будет архиважным. Желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Сделать это можно в нашем же файле строкой:

header('Content-Type: text/html; charset=UTF-8');

Попробуем осуществить проверку. Сохраним в переменную:

$mysqli = mysqli_connect("localhost", "db_users", "123456", "db_users");
if ($mysqli == false){
    print("Ошибка: Невозможно подключиться к MySQL " . mysqli_connect_error());
}else{
    print("Соединение установлено успешно");
}

 

Ну и все. Мы дошли до того момента, когда можем выполнить первый запрос к базе данных MySQL.

Замечу, что следует разделять все SQL-запросы на две группы:

    1. Чтение информации (SELECT).
    1. Модификация (UPDATE, INSERT, DELETE).

Пусть нам прилетают какие-то данные из формы и мы хотим их вставить в нашу таблицу базы данных. Принимаем данные (упрощенно):

$name = $_POST['name'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];

И отправляем запрос на добавление:

$mysqli->query("INSERT INTO `users` (`name`, `lastname`, `email`, `pass`) VALUES ('$name', '$lastname', '$email', '$pass')");

 

Метод query и такой синтаксис хорош, когда вы только начинаете изучение.

Вы можете столкнуться с разным синтаксисом в документации и на форумах в примерах.

mysqli_query($mysqli, $query); // процедурный синтаксис
$mysqli->query($query); // объектный синтаксис

 

В целях безопасности лучше делать так, чтобы запрос и данные шли отдельно. То есть использовать подготовленнные запросы. Как?

1 — Подготавливаем запрос. Мы добавляем знаки вопроса ? там, где раньше была переменная.

2 — Привязываем сами переменные к этому подготовленному выражению, можно указать ее тип.

3 — Выполняем запрос.

 

Пример:

$sql = "SELECT * FROM `users` WHERE `email`=?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();

 

Начиная с PHP 8.1, bind_param можно не использовать, отправив вместо этого все переменные в execute() в виде массива:

    $stmt = $db->prepare("INSERT INTO users (email, password) VALUES (?,?)");
    $stmt->execute([$email, $password_hash]);

 

Опять же, примеры привожу для целей обучения.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!