Підступна війна росії проти України. Орієнтовні втрати ворога
(станом на 28.05.2022)
30000
осіб
207
літаків
174
гелікоптерів
1330
танків
3258
ББМ
628
артилерія
93
ППО
203
РСЗВ
2226
машин
13
кораблі і катери
Як працювати з базою даних MySQL в PHP

Як працювати з базою даних 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);
?>

 

 

Цей код є повністю робочим, і ви можете використовувати його на практиці. Звичайно, ви можете поліпшити код і додати свої дані, але для демонстрації цього коду цілком достатньо.

На сьогодні все, дякуємо за увагу!

 

 

Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься.