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

 

 

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

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

 

Recent Posts

Ошо

Уже поздно возвращаться назад, чтобы все правильно начать, но еще не поздно устремиться вперед, чтобы… Read More

23/05/2021

Шпаргалка по временным формам глагола в английском языке

В английском языке очень сложная система времен (временные формы глагола – Verb Tenses), которая относится… Read More

17/05/2021

Теория цвета – советы для вдохновения веб-дизайнерам

Вы когда-нибудь задумывались о том, как веб-дизайнеры подбирают идеальное сочетание цветов? Интересовались тем, какие цвета… Read More

30/04/2021

Как стать фрилансером – действенные советы

Фриланс – это возможность спокойно и размеренно работать дома, не обращая внимания на окружающее пространство,… Read More

27/04/2021

Самые красивые каньоны со всего мира (часть 1/2)

На протяжении многих сотен тысяч, или даже миллионов лет, быстрое течение рек подтачивало и вымывало… Read More

27/04/2021

Уильям Шекспир

Грехи других судить вы так усердно рветесь, начните со своих и до чужих не доберетесь… Read More

18/04/2021