- Взаимодействие с MySQL через mysqli
- Создание подключения в объектно-ориентированном стиле
- Подключение в процедурном стиле
- PHP Connect to MySQL Server
- Ways of Connecting to MySQL through PHP
- Connecting to MySQL Database Server
- Syntax: MySQLi, Procedural way
- Syntax: MySQLi, Object Oriented way
- Syntax: PHP Data Objects (PDO) way
- Example
- Closing the MySQL Database Server Connection
- Example
- PHP: как подключиться к базе данных mySQL
- Как это работает
- Подключение к БД через функцию MySQLi
- Как сделать выборку данных по параметру + защита
- Как выбрать данные по параметру
- Проверка соединения
- Установка кодировки
- Заключение
Взаимодействие с MySQL через mysqli
Библиотека MySQLi представляет альтернативный способ подключения к базе данных MySQL. Причем он предоставляет два подхода: процедурный и объектно-ориентированный. Рассмотрим применение обоих подходов.
Создание подключения в объектно-ориентированном стиле
Для создания подключения к серверу MySQL в объектно-ориентированном стиле применяется конструктор mysqli() , в который передаются настройки подключения — адрес сервера MySQL, имя пользователя и пароль:
$conn = new mysqli("адрес_сервера", "имя_пользователя", "пароль");
Конструктор создает объект mysqli , через который осуществляется взаимодействие с базой данных. Однако если подключение не удалось установить, то устанавливается свойство $conn->connect_error , которое содержит информацию об ошибке. Поэтому перед взаимодействием с MySQL мы можем проверить успешность подключения:
if ($conn->connect_error) < die("Connection failed: " . $conn->connect_error); >
После окончания выполнения скрипта подключение к MySQL закрывается автоматически. Однако мы можем закрыть подключение и до окончания работы скрипта с помощью метода close() :
Теперь соединим все вместе выполним подключение к локальному серверу MySQL:
connect_error)< die("Ошибка: " . $conn->connect_error); > echo "Подключение успешно установлено"; $conn->close(); ?>
Поскольку подключение производится к локальному серверу MySQL, то первый параметр конструктора mysqli — строка «localhost». Второй параметр в качестве имени пользователя использует «root» — пользователь, который содается на сервере MySQL по умолчанию. И третий параметр — пароль пользователя «root».
Подключение в процедурном стиле
Для подключения в процедурном стиле применяется функция mysqli_connect , которая принимает адрес сервера, имя и пароль пользователя:
$conn = mysqli_connect("адрес_сервера", "имя_пользователя", "пароль");
Функция возвращает объект, который используется для подключения к базе данных. Однако если подключение не удалось установить, то функция возвращает false . Поэтому перед взаимодействием с MySQL мы можем проверить успешность подключения:
С помощью функции mysqli_connect_error() можно получить информацию об ошибке.
Для закрытия подключения применяется функция mysqli_close() , которая в качестве параметра принимает ранее созданный объект подключения:
echo "Подключение успешно установлено"; mysqli_close($conn); ?>
PHP Connect to MySQL Server
In this tutorial you will learn how to connect to the MySQL server using PHP.
Ways of Connecting to MySQL through PHP
In order to store or access the data inside a MySQL database, you first need to connect to the MySQL database server. PHP offers two different ways to connect to MySQL server: MySQLi (Improved MySQL) and PDO (PHP Data Objects) extensions.
While the PDO extension is more portable and supports more than twelve different databases, MySQLi extension as the name suggests supports MySQL database only. MySQLi extension however provides an easier way to connect to, and execute queries on, a MySQL database server. Both PDO and MySQLi offer an object-oriented API, but MySQLi also offers a procedural API which is relatively easy for beginners to understand.
Tip: The PHP’s MySQLi extension provides both speed and feature benefits over the PDO extension, so it could be a better choice for MySQL-specific projects.
Connecting to MySQL Database Server
In PHP you can easily do this using the mysqli_connect() function. All communication between PHP and the MySQL database server takes place through this connection. Here’re the basic syntaxes for connecting to MySQL using MySQLi and PDO extensions:
Syntax: MySQLi, Procedural way
Syntax: MySQLi, Object Oriented way
Syntax: PHP Data Objects (PDO) way
The hostname parameter in the above syntax specify the host name (e.g. localhost ), or IP address of the MySQL server, whereas the username and password parameters specifies the credentials to access MySQL server, and the database parameter, if provided will specify the default MySQL database to be used when performing queries.
The following example shows how to connect to MySQL database server using MySQLi (both procedural and object oriented way) and PDO extension.
Example
// Print host information echo "Connect Successfully. Host info: " . mysqli_get_host_info($link); ?>
connect_error); > // Print host information echo "Connect Successfully. Host info: " . $mysqli->host_info; ?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Print host information echo "Connect Successfully. Host info: " . $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); > catch(PDOException $e)< die("ERROR: Could not connect. " . $e->getMessage()); > ?>
Note: The default username for MySQL database server is root and there is no password. However to prevent your databases from intrusion and unauthorized access you should set password for MySQL accounts.
Tip: Setting the PDO::ATTR_ERRMODE attribute to PDO::ERRMODE_EXCEPTION tells PDO to throw exceptions whenever a database error occurs.
Closing the MySQL Database Server Connection
The connection to the MySQL database server will be closed automatically as soon as the execution of the script ends. However, if you want to close it earlier you can do this by simply calling the PHP mysqli_close() function.
Example
// Print host information echo "Connect Successfully. Host info: " . mysqli_get_host_info($link); // Close connection mysqli_close($link); ?>
connect_error); > // Print host information echo "Connect Successfully. Host info: " . $mysqli->host_info; // Close connection $mysqli->close(); ?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Print host information echo "Connect Successfully. Host info: " . $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); > catch(PDOException $e)< die("ERROR: Could not connect. " . $e->getMessage()); > // Close connection unset($pdo); ?>
PHP: как подключиться к базе данных mySQL
PHP — это язык программирования на стороне сервера для обработки HTTP-запросов. К HTTP-запросам относятся:
- GET — позволяет читать данные из того места, где они хранятся. Обычно это делается с помощью запроса к базе данных (MySQL).
- POST — для отправки пользовательских данных, обычно, из HTML-формы. PHP позволяет получить доступ к глобальной переменной $_POST и сохранить ее значение. При этом сам PHP позволяет создавать, читать, обновлять, уничтожать БД.
Что же на самом деле происходит в процессе установки, что позволяет всем перечисленным компонентам работать вместе? Ведь если Apache и PHP, по сути, отдельные программы, то как они работают вместе над обслуживанием файла? Все просто: PHP-скрипт нужно настроить так, чтобы он подключился к базе данных SQL, прежде чем мы сможем использовать соответствующую базу данных (функция mysqli_connect).
Важно: обычно HTML-страница вызывает скрипт через пользовательскую форму ввода. И при непосредственном вводе данных как раз и происходит их добавление в базу данных. И тут должно быть соблюдено важное условие: они должны находиться на одном сервере и на одном домене. Таким образом, локальность всего программирования остается в силе.
Итак, резюмируем роли PHP и mySQL простыми словами:
- PHP — как командир (программист пишет код и отдает указания языку, что и как делать).
- MySQL — хранит информацию (как база данных).
- Скрипт на PHP манипулирует, анализирует и создает новые данные на основе двух факторов: a) Пользовательские данные (которые в конечном итоге и попадают в базу данных). b) Данные, которые уже находятся в mySQL.
Как это работает
MySQL — это реляционная система управления базами данных, которая сочетает в себе стандарты SQL и функциональность РСУБД.
Вообще любой проект, независимо от его масштабов, может быть реализован с помощью MySQL. С помощью этой технологии БД можно управлять огромными объемами данных — без ущерба для их качества. Вы также можете использовать решения на базе PHP для веба — для организации доступа к огромным наборам данных из связанной или распределенной базы данных. PHP поддерживает множество баз данных, включая MySQL, MariaDB, MongoDB, Oracle и другие.
Подключение к БД с помощью PHP становится сверхважным: если скрипт не сможет подключиться к такой базе данных, запросы к ней будут неудачными.
Хорошей идеей при настройке БД является указание в начале скрипта:
Таким образом, если понадобится обновить БД позже, сделать это получится гораздо быстрее.
Вернёмся к тому, как именно PHP подключается к БД. Так в PHP существует три метода подключения к MySQL через бэкенд:
Рассмотрим синтаксис для всех трёх вариантов ниже.
Синтаксис MySQLi, «процедурный» способ:
$link = mysqli_connect("hostname", "username", "password", "database");
Синтаксис: MySQLi, «объектно-ориентированный» способ:
$mysqli = new mysqli("hostname", "username", "password", "database");
$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");
Подключение к БД через функцию MySQLi
Учитывая все вышесказанное становится понятно: подключение PHP к базе данных MySQL — довольно простая задача.
Допустим, у нас есть БД со следующими данными:
- Имя — test.
- Имя хоста — localhost.
- Имя пользователя — root.
- Пароль — password.
Чтобы установить соединение с базой данных используем функцию mysqli_connect(). Например, вот так:
$connection = mysqli_connect('localhost','root','password','test');
Чтобы проверить, было ли соединение установлено успешно, используйте следующий код:
if ($connection->connect_error) < die("Connection failed"); >$connection = new mysqli('localhost','root','password');
Как сделать выборку данных по параметру + защита
На этом этапе у вас уже должен быть файл index.php. Но, если его нет — используйте шаблон, который мы дадим ниже:
Проверяем. Готово! Всё работает корректно. Теперь нужно будет выбрать данные.
Допустим, нам нужно сделать перебор на основе ассоциативного массива. Для этого создаём соответствующий запрос (выбор из определённой группы пользователей, по логинам) и прописываем перебор в цикле while. Код может быть таким:
// Обращаемся к таблице users $query = $pdo -> query('SELECT * FROM users'); // Перебираем массив while ($row = $query->fetch(PDO::FETCH_ASSOC)) < echo $row['login']."
"; >
Не забывайте, что выборку данных можно осуществлять не только по ассоциативным массивам, но и с помощью объектов (соответственно, PDO::FETCH_OBJ).
PHP — неотъемлемая часть бэкенд-разработки в 2023 году. Успей попасть в группу сегодня и получи профессию разработчика уже завтра!
Вернёмся к нашему примеру. Вывод, таким образом, даст нам список логинов пользователей, которые присутствуют в таблице.
Как выбрать данные по параметру
При необходимости можно создать выборку только по нужным данным в таблице. Например, как в этом случае:
(обратите внимание: в execute указаны замены для нескольких ключей и указываются такие замены в формате ‘ключ’ => значение)
$login = 'Sergei'; // Будет подставлено на месте :login // Теперь составляем запрос с нужным нам ключом $sql = 'SELECT * FROM users WHERE login = :login'; $query = $pdo -> prepare($sql); // Подготовка запроса // В кавычках — ключ из нашего запроса // Далее — значение-замена $query -> execute(['login' => $login]); // Перебор массива, но только с учётом наличия строк вида login = Sergei while ($row = $query->fetch(PDO::FETCH_ASSOC))
Существуют и другие способы выбрать данные по параметру, но вышеуказанный мы демонстрируем как самый удобный и читаемый.
Проверка соединения
Должна проводиться обязательно. Ведь множество факторов может привести к тому, что mySQL будет закрывать все попытки подключения: от некорректных параметров соединения до высоких пингов.
Чтобы проверить соединение с mySQL, используйте стандартную функцию mysqli_connect(). Вы сразу увидите удалось ли установить соединение, если же соединения не установлено — функция вернёт значение false.
Установка кодировки
Когда соединение установлено и предварительно всё функционирует корректно — сразу приступаем к установке кодировки, в противном случае можно получить кракозябры.
Чтобы установить кодировку UTF8 для MySQLi используйте стандартную конструкцию:
mysqli_set_charset($con, "utf8");
Заключение
В этом разделе подытожим основную информацию, которая пригодится начинающему программисту.
Что нужно знать
Чтобы успешно подключить PHP-скрипт к mySQL необходимо хотя бы базовое представление об этих технологиях (а также об MySQLi и PDO).
Что выбрать
MySQLi и PDO имеют свои преимущества. Важно помнить, что MySQLi предназначен только для баз данных MySQL. И если вы захотите использовать другую БД, придется переписать весь код. А вот PDO умеет подключаться к десятку различных баз данных, что значительно упрощает процесс перехода.
Можно использовать любой из трех перечисленных выше подходов (mySQL, mySQLi, PDO).
Связка PHP и MySQL часто используется, когда нужна высокая читабельность кода и соответствие его заданной структуре.
Изучение обеих технологий может принести пользу в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.