Как работать с базой данных MySQL в PHP
В сегодняшней практической статье мы рассмотрим все, что нужно знать начинающим о работе с базой данных MySQL в PHP. Здесь вы найдете подробную информацию о том, как создать базу данных, как подключаться к базе данных, как вставлять, обновлять и удалять данные в базе данных MySQL с помощью PHP.
Основы по работе с базой данных MySQL в PHP
Как вы знаете, с помощью PHP вы можете создавать динамический контент сайта. Динамический контент не обязательно требует базы данных, однако в большинстве случаев она нужна. Все системы управления контентом (CMS), блоги или простые обработчики формы используют базу данных. В мире PHP наиболее часто используемая база данных – MySQL. Поэтому далее мы сосредоточимся на том, как использовать PHP и MySQL для создания динамического контента.
Убедитесь, что у вас установлена и правильно настроена система, поддерживающая как PHP, так и MySQL.
Создание тестовой базы данных
В этом разделе мы создадим базу данных MySQL с названием test
, которая будет содержать одну таблицу под названием users
. Ниже представлен SQL-код, который создает базу данных, таблицу и вставляет некоторые данные по умолчанию. Вы можете использовать SQL-запрос в инструменте по работе с базами данных – phpMyAdmin.
CREATE DATABASE if NOT EXISTS `test`; USE test; CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) DEFAULT NULL, `age` SMALLINT(6) DEFAULT NULL, `city` VARCHAR(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=latin1; INSERT INTO `users`(`id`,`name`,`age`,`city`) VALUES (1,'Ivan',25,'Kyiv'); INSERT INTO `users`(`id`,`name`,`age`,`city`) VALUES (2,'Petro',37,'Kharkiv'); INSERT INTO `users`(`id`,`name`,`age`,`city`) VALUES (3,'Galina',19,'Zaporizhzhia'); INSERT INTO `users`(`id`,`name`,`age`,`city`) VALUES (4,'Stepan',24,'Lviv'); INSERT INTO `users`(`id`,`name`,`age`,`city`) VALUES (5,'Natasha',20,'Odesa');
Подключение к базе данных MySQL с помощью PHP
Чтобы использовать любую базу данных в PHP (или других языках программирования), вам сначала нужно подключиться к серверу базы данных. Подключение к базе данных MySQL в PHP требует наличия некоторой информации. Вам необходимо получить следующие данные для установления соединения:
- Имя хоста (hostname)
- Имя пользователя базы данных (username)
- Имя базы данных (database)
- Пароль (password)
Для подключения к базе данных сначала необходимо подключиться к серверу базы данных MySQL, а на следующем шаге выбрать необходимую базу данных. Конечно, если соединение с сервером не удалось, то нет смысла продолжать сценарий, поэтому мы обрываем подключение. Давайте посмотрим, как это выглядит в PHP:
<?php $db_handle = mysqli_connect("localhost", "username", "password"); if($db_handle === false){ die("ОШИБКА: Невозможно подключиться. " . mysqli_connect_error()); } echo "Подключение к серверу прошло успешно! <br>"; mysqli_select_db($db_handle, "test") or die(mysqli_error()); echo "База данных была выбрана!"; mysqli_close($db_handle); ?>
Как вы можете видеть, функция mysqli_connect()
устанавливает соединение с сервером MySQL, и в качестве следующего шага мы можем выбрать базу данных с помощью функции mysqli_select_db()
.
ВАЖНО! Обратите внимание, что мы используем mysqli_connect()
вместо mysql_connect()
, поскольку последнее расширение устарело начиная с версии PHP 5.5.0 и было удалено в PHP 7.0.0.
Если вы выполните приведенный выше скрипт, вы должны увидеть следующее (при условии, что ваши данные для подключения корректны):
Подключение к серверу прошло успешно! База данных была выбрана!
Закрытие соединения с базой данных
Прежде чем продолжим, мы хотим упомянуть одну важную деталь. Имеется в виду закрытие соединения с базой данных. Начиная с PHP 4, вам не нужно закрывать соединение с базой данных, как описано выше. Это делается автоматически сборщиком мусора PHP. Однако рекомендуется закрывать соединение с базой данных, чтобы освобождать ресурсы и память. Вы можете закрыть соединение с базой данных MySQL, вызвав функцию mysqli_close()
. Эта функция закрывает фактическое соединение с базой данных.
Извлечение данных с помощью PHP из базы данных MySQL
Теперь пришло время сделать что-то более интересное. Например, давайте попробуем извлечь данные из нашей таблицы. Для этого сначала нужно открыть соединение и выбрать соответствующую базу данных, как и раньше. Следующим шагом является отправка SQL-запроса – в данном случае оператора SELECT – в базу данных. Теперь попробуйте получить все записи из MySQL базы. Пример SQL-запроса для этого:
SELECT * FROM users;
Нам нужно отправить эту команду на сервер и сохранить ответ. Мы можем сделать это, используя функцию mysqli_query()
следующим образом:
<?php $db_handle = mysqli_connect("localhost", "username", "password"); if($db_handle === false){ die("ОШИБКА: Невозможно подключиться. " . mysqli_connect_error()); } mysqli_select_db($db_handle, "test") or die(mysqli_error()); $result = mysqli_query($db_handle, "SELECT * FROM users"); echo $result; ?>
Этот запрос рабочий, но как отобразить данные из переменной $result
? Если вы попытаетесь вывести ее с помощью echo
, вы получите что-то вроде этого:
PHP Recoverable fatal error: Object of class mysqli_result could not be converted to string
Это не то, что нам нужно. Для правильного отображения выбранных данных вам нужно сделать немного больше. В PHP есть функции, которые вы можете использовать для извлечения данных из результирующего набора базы данных MySQL. Вот эти функции:
mysqli_fetch_assoc()
– извлекает результирующий ряд в виде ассоциативного массиваmysqli_fetch_row()
– получает строки результирующей таблицы в виде массиваmysqli_fetch_array()
– извлекает строку результата как ассоциативный массив, обычный массив или оба
Все они преобразуют одну запись результата в массив, и позже вы можете использовать этот массив по своему усмотрению. Для получения массива необходимо вызвать одну из вышеупомянутых функций. В данном примере мы используем ассоциативную версию.
<?php $row = mysqli_fetch_assoc($result); echo "ID: " . $row['id'] . ", Имя:" . $row['name'] . ", Возраст:" . $row['age'] . ", Город:" . $row['city'] . "<br>"; ?>
Однако функция возвращает только одну запись, а в наборе результатов должно быть 5 записей. Чтобы перечислить все записи, нам нужно создать цикл. Функции выборки возвращают массив, если в наборе результатов есть запись, и возвращают false
, если записей больше нет. Для выборки мы будем использовать простой цикл while:
<?php $result = mysqli_query($db_handle, "SELECT * FROM users"); while($row = mysqli_fetch_assoc($result)){ echo "ID: " . $row['id'] . ", Имя:" . $row['name'] . ", Возраст:" . $row['age'] . ", Город:" . $row['city'] . "<br>"; } ?>
Как видите, это не сложная задача. В следующем разделе мы будем вставлять данные в базу данных.
Как вставлять, обновлять, удалять записи в базе данных
Вставка данных в базу данных с помощью PHP
В этом разделе мы создадим код для вставки новых записей в нашу базу данных MySQL. Это довольно легко. Нам также нужно создать соединение с базой данных, и мы снова будем использовать функцию mysqli_query()
. Однако в этом случае мы будем использовать ее с оператором вставки в SQL. Теперь давайте попробуем добавить нового пользователя в нашу таблицу. Данный SQL-запрос будет выглядеть следующим образом:
INSERT INTO users (name,age,city) VALUES ('Danilo',44,'Dnipro');
Теперь сохраните этот SQL-запрос в переменной и передайте его в качестве параметра mysqli_query
следующим образом:
<?php $sql = "INSERT INTO users (name,age,city) VALUES ('Danilo',44,'Dnipro')"; $result = mysqli_query($db_handle, $sql); ?>
Помимо этого нам нужно проверить результат и сообщить пользователю, если произошла ошибка. Полный код вы найдете в конце данного урока.
Обновление данных в базе данных с помощью PHP
Обновление данных почти такое же, как и вставка. Вам нужно только изменить оператор в SQL-запросе и использовать его, как и раньше:
<?php $sql = "UPDATE users SET age=45 WHERE name='Danilo'"; $result = mysqli_query($db_handle, $sql); ?>
Удаление данных из базы данных с помощью PHP
Как вы, наверное, знаете, здесь примерно все одинаковое. Только нужно заменить оператор в SQL-запросе:
<?php $sql = "DELETE FROM users WHERE name='Danilo'"; $result = mysqli_query($db_handle, $sql); ?>
Полный пример скрипта PHP по работе с базой данных MySQL
Здесь вы можете найти полный код, который демонстрирует все 4 основных оператора SQL. С помощью этого кода вы узнаете, как использовать PHP для внесения изменений в данные в базе данных MySQL.
<?php $db_handle = mysqli_connect("localhost", "username", "password"); if($db_handle === false){ die("ОШИБКА: Невозможно подключиться. " . mysqli_connect_error()); } mysqli_select_db($db_handle, "test") or die(mysqli_error()); echo "<br>Шаг 1. Вставка данных<hr>"; $sql = "INSERT INTO users (name,age,city) VALUES ('Danilo',44,'Dnipro')"; $result = mysqli_query($db_handle, $sql); if ($result){ echo "Данные были вставлены!<br>"; } else { echo "Произошла ошибка во время вставки!<br>"; } $result = mysqli_query($db_handle, "SELECT * FROM users"); while($row = mysqli_fetch_assoc($result)){ echo "ID: " . $row['id'] . ", Имя:" . $row['name'] . ", Возраст:" . $row['age'] . ", Город:" . $row['city'] . "<br>"; } echo "<br>Шаг 2. Обновление данных<hr>"; $sql = "UPDATE users SET age=45 WHERE name='Danilo'"; $result = mysqli_query($db_handle, $sql); if ($result){ echo "Данные были обновлены!<br>"; } else { echo "Произошла ошибка во время обновления!<br>"; } $result = mysqli_query($db_handle, "SELECT * FROM users"); while($row = mysqli_fetch_assoc($result)){ echo "ID: " . $row['id'] . ", Имя:" . $row['name'] . ", Возраст:" . $row['age'] . ", Город:" . $row['city'] . "<br>"; } echo "<br>Шаг 3. Удаление данных<hr>"; $sql = "DELETE FROM users WHERE name='Danilo'"; $result = mysqli_query($db_handle, $sql); if ($result){ echo "Данные были удалены!<br>"; } else { echo "Произошла ошибка во время удаления!<br>"; } $result = mysqli_query($db_handle, "SELECT * FROM users"); while($row = mysqli_fetch_assoc($result)){ echo "ID: " . $row['id'] . ", Имя:" . $row['name'] . ", Возраст:" . $row['age'] . ", Город:" . $row['city'] . "<br>"; } mysqli_close($db_handle); ?>
Этот код является полностью рабочим, и вы можете использовать его на практике. Конечно, вы можете улучшить код и добавить свои данные, но для демонстрации этого кода вполне достаточно.
На сегодня все, спасибо за внимание!