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

 

 

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

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

 



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

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