Как работать с базой данных 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);
?>

 

 

Этот код является полностью рабочим, и вы можете использовать его на практике. Конечно, вы можете улучшить код и добавить свои данные, но для демонстрации этого кода вполне достаточно.

На сегодня все, спасибо за внимание!

 

Share

Последние посты

Как выбрать идеальный ноутбук: Полный гайд

Выбор ноутбука может быть сложной задачей в мире, где рынок переполнен вариантами на любой вкус… Читать далее

22/04/2024

Томас Эдисон

Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее

20/04/2024

Самые красивые и впечатляющие мосты со всего мира (ТОП-10)

Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее

19/04/2024

Соломон

Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее

18/04/2024

Чак Паланик

Кто может — тот делает. Кто не может — тот критикует Чак Паланик   Читать далее

17/04/2024

Ричард Бах

Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее

16/04/2024