PHP MySQL Database

PHP, з'єднання з базою Даних MySQL

Матеріал представлений на сторінці є моїм перекладом ресурсу w3schools.com/php/php_ref_mysqli.asp

PHP 5 та пізніші версії можуть працювати з СКБД MySQL застосовуючи:
- MySQLi- розширення ( "і" вказує на покращений варіант )
- PDO (PHP Data Objects)


Попередні версії PHP використовували MySQL-розширення. Але з 2012 року це розширення не рекомендується.



Що застосовувати MySQLi чи PDO?

Якщо коротко, то відповідь "Використовуйте те, що Вам подобається".
Як MySQLi так і PDO мають власні переваги:
PDO працює з різними системами Баз Даних, при тому що MySQLi працює лише з СКБД MySQL.
Якщо Вам необхідно переключитись на застосування іншої Бази Даних, PDO робить цей процес легшим. Ви можете змінити лише код виразу з'єднання та декілька запитів. З MySQLi Вам необхідно переписувати все кодування, включаючи запити до БД.
Обидва методи можуть бути об'єктно-орієнтованими, але MySQLi також може використовувати процедурний API.
Обидва методи підтримують Prepared Statements. Prepared Statements захищають від SQL-інєкцій , та є дуже важливим для безпеки веб-застосунків.

Приклади застосування MySQLi та PDO

В цьому та слідуючих розділах ми розглянемо три варіанти роботи PHP та MySQL:
- MySQLi (об'єктно-орієнтований )
- MySQLi (процедурний )
- PDO (PHP Data Objects)



Встановлення MySQLi

Для Linux та Windows: MySQLi-розширення автоматично встановлюється в більшості випадків. щоб детальніше дізнатися про встановлення перегляньте php.net/manual/en/mysqli.installation.php

Встановлення PDO

Детальніше про встановлення; php.net/manual/en/pdo.installation.php

Організація з'єднання з MySQL

Перед тим, як ми зможемо мати доступ до Бази Даних, необхідно виконати з'єднання до серверу:

MySQLi об'єктно-орієнтований стиль кодування

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Створюємо з'єднання
$conn = new mysqli($servername, $username, $password);

// Перевіряємо з'єднання
if ($conn->connect_error) {
die("Помилка з'єднання: " . $conn->connect_error);

} echo"З'єднання успішне";
?>

MySQLi процедурний стиль кодування

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Створюємо з'єднання
$conn = mysqli_connect($servername, $username, $password);

// Перевіряємо з'єднання
if (!$conn) {
die("Помилка з'єднання: " . mysqli_connect_error());
}
echo "З'єднання успішне";
?>

PDO стиль кодування

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
       $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);

       // встановлення PDO на випадок помилки з'єднання ( exception )
       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       echo "З'єднання успішне";
       }
catch(PDOException $e)
       {
       echo "Помилка з'єднання: " . $e->getMessage();
       }
?>


info label

Зверніть увагу в поданому вище прикладі ми з'єднались з Базою Даних (myDB). PDO вимагає вказувати дійсну Базу Даних; якщо не вказати БД, то отримаємо повідомлення про помилку з'єднання.

Порада: Перевагою PDO є застосування класу exception, що дозволяє вирішувати любі проблеми, що можуть статися під час запитів до Бази Даних. Якщо виконується exception в середині блоку try{ }, то скрипт перестає далі виконуватись та переходить до виконання блоку catch(){ }.

Завершення з'єднання з MySQL

    З'єднання автоматично завершиться як тільки завершиться скрипт. Але якщо є необхідність завершити з'єднання раніше тоді застосовується вираз:

MySQLi об'єктно-орієнтований стиль кодування

$conn->close();

MySQLi процедурний стиль кодування

mysqli_close($conn);

PDO

$conn = null;