В сегодняшней практической статье мы рассмотрим все, что нужно знать начинающим о работе с базой данных 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');
Чтобы использовать любую базу данных в PHP (или других языках программирования), вам сначала нужно подключиться к серверу базы данных. Подключение к базе данных MySQL в PHP требует наличия некоторой информации. Вам необходимо получить следующие данные для установления соединения:
Для подключения к базе данных сначала необходимо подключиться к серверу базы данных 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()
. Эта функция закрывает фактическое соединение с базой данных.
Теперь пришло время сделать что-то более интересное. Например, давайте попробуем извлечь данные из нашей таблицы. Для этого сначала нужно открыть соединение и выбрать соответствующую базу данных, как и раньше. Следующим шагом является отправка 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>"; } ?>
Как видите, это не сложная задача. В следующем разделе мы будем вставлять данные в базу данных.
В этом разделе мы создадим код для вставки новых записей в нашу базу данных 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); ?>
Помимо этого нам нужно проверить результат и сообщить пользователю, если произошла ошибка. Полный код вы найдете в конце данного урока.
Обновление данных почти такое же, как и вставка. Вам нужно только изменить оператор в SQL-запросе и использовать его, как и раньше:
<?php $sql = "UPDATE users SET age=45 WHERE name='Danilo'"; $result = mysqli_query($db_handle, $sql); ?>
Как вы, наверное, знаете, здесь примерно все одинаковое. Только нужно заменить оператор в SQL-запросе:
<?php $sql = "DELETE FROM users WHERE name='Danilo'"; $result = mysqli_query($db_handle, $sql); ?>
Здесь вы можете найти полный код, который демонстрирует все 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); ?>
Этот код является полностью рабочим, и вы можете использовать его на практике. Конечно, вы можете улучшить код и добавить свои данные, но для демонстрации этого кода вполне достаточно.
На сегодня все, спасибо за внимание!
Визуальная привлекательность является ключевой особенностью любого сайта на ВордПрессе. Посетители чаще будут открывать ссылки, украшенные…
Любые собеседования всегда волнуют, и даже могут вызвать определенную степень нервозности. Однако, если вы будете…
Изменить я этого не могу, остается извлекать из этого пользу Артур Шопенгауэр
По умолчанию после каждой установки WordPress есть три основных URL-адреса для входа в админку: {домен}/wp-admin.php,…
Производительность – это валюта фрилансера. Когда ты работаешь сам на себя, никто не спросит: "Сколько…