PHP Учебник

PHP Старт Введение в PHP Установка PHP Синтаксис PHP Комментарии в PHP Переменные PHP PHP Echo / Print Типы данных PHP Строки PHP Числа PHP Математика в PHP Константы PHP Операторы PHP PHP If...Else...Elseif PHP Switch Циклы в PHP Функции PHP Массивы PHP PHP Суперглобальные PHP RegEx

PHP Формы

Обработка форм PHP Валидация форм PHP Обязательные поля Валидация URL/E-mail Полная форма PHP

PHP Продвинутый

PHP Дата и время PHP Include/Require PHP Работа с файлами Открытие/Чтение файлов Создание/Запись файлов PHP Загрузка файлов Файлы cookie PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Функция Callback PHP JSON PHP Исключения

PHP OOP

Что такое ООП в PHP Классы/Объекты PHP Цепочки методов PHP Конструктор PHP Деструктор PHP Модификаторы доступа Наследование в PHP Константы класса PHP Подсказка типов PHP Подсказка интерфейсов Абстрактные классы PHP PHP Интерфейсы PHP Полиформизм PHP Трейты Статические методы PHP Статические свойства PHP Пространства имен PHP Итерируемые объекты

База данных MySQL

База данных MySQL Подключение к MySQL Создание БД MySQL Создание таблицы MySQL Вставка данных MySQL Получить ID MySQL Подготовленные операторы PHP MySQL Получение данных MySQL Предложение WHERE Предложение ORDER BY Обновление данных MySQL Удаление данных БД MySQL Limit Data

PHP XML

Парсеры PHP XML Парсер PHP SimpleXML Получить PHP SimpleXML PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Введение AJAX PHP AJAX База Данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры Практика ООП PHP PHP квиз-тест Упражнения Базовый PHP Упражнения Алгоритмы Упражнения Массивы Упражнения Цикл for Упражнения Функции Регулярные выражения Упражнения Дата PHP Упражнения Строки PHP Математика PHP Упражнения Формы PHP Упражнения Классы PHP Упражнения JSON PHP PHP Задачник


Подключение к MySQL




PHP 5 и более поздние версии могут работать с базой данных MySQL, используя:

  • Расширение MySQLi ("i" означает улучшенный)
  • PDO (объекты данных PHP)

  • PDO работает с 12 различными системами баз данных, тогда как MySQLi работает только с базами данных MySQL.
  • И PDO, и MySQLi объектно-ориентированы, но MySQLi также предлагает процедурный API.
  • Если в какой-то момент разработки вы захотите изменить базу данных, тогда это будет проще сделать в PDO, чем в MySQLi, поскольку PDO поддерживает 12 различных систем баз данных. Вам нужно будет только изменить строку подключения и несколько запросов. С MySQLi вам нужно будет переписать весь код, включая запросы.
  • Оба поддерживают подготовленные заявления. Подготовленные операторы защищают от внедрения SQL и очень важны для безопасности веб-приложений.

В этом и следующих уроках мы продемонстрируем три способа работы с PHP и MySQL:

  • MySQLi (объектно-ориентированный)
  • MySQLi (процедурный)
  • PDO

Для Linux и Windows: расширение MySQLi автоматически устанавливается в большинстве случаев, когда установлен пакет php5 mysql.

Для получения информации об установке перейдите по адресу.

Для получения информации об установке перейдите по адресу.

Перед тем как мы начнём выполнять какие-либо операции с записями с базой данных MySQL, необходимо к ней подключиться. Сделать это можно несколькими способами:

Использование объектно-ориентированной процедуры MySQLi: мы можем использовать объектно-ориентированный метод MySQLi для установления соединения с базой данных MySQL из сценария PHP.

Пример (объектно-ориентированный MySQLi)

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

// Создание подключения
$conn = new mysqli($servername, $username, $password);

// Проверяем соединение
if ($conn->connect_error) {
  die("Ошибка подключения: " . $conn->connect_error);
}
echo "Подключено успешно";
?>

Объяснение примера: В данном случае, мы создаем экземпляр класса mysqli, предоставив все необходимые данные, необходимые для установления соединения, такие как хост, имя пользователя, пароль и т.д. Если экземпляр создан успешно, соединение будет успешным, в противном случае возникнет ошибка при установлении соединения.

Примечание: $ connect_error не работал до PHP 5.2.9 и 5.3.0. Если вам необходимо обеспечить совместимость с версиями PHP до 5.2.9 и 5.3.0, используйте вместо этого следующий код:

// Проверяем соединение
if (mysqli_connect_error ()) {
  die ("Ошибка подключения к базе данных:". Mysqli_connect_error ());
}

Процедурный подход к использованию MySQLi: Если вам более понятен и удобен порядок работы в процедурном формате, то можно использовать тот же метод, но в несколько ином синтаксисе.

Пример (процедура MySQLi)

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

// Создание подключения
$conn = mysqli_connect($servername, $username, $password);

// Проверяем соединение
if (!$conn) {
  die("Ошибка подключения: " . mysqli_connect_error());
}
echo "Подключено успешно";
?>

Объяснение примера: В процедурном подходе MySQLi вместо создания экземпляра мы можем использовать функцию mysqli_connect(), доступную в PHP, для установления соединения. Эта функция принимает информацию в виде аргументов, таких как хост, имя пользователя, пароль, имя базы данных и т.д. Эта функция возвращает идентификатор ссылки MySQL при успешном соединении или FALSE, если соединение не удалось установить.

Подключение к БД средствами PDO: Хорошим решением для работы с веб-проектами является применение технологии PDO (PHP Data Objects). Преимущество технологии PDO (PHP Data Objects) в том, что с ее помощью можно работать с различными базами данных, не меняя основной код проекта. В этом случае мы подключаемся к базе данных, используя объекты данных в PHP, как описано ниже:

Пример (PDO)

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

try { // выполнение подключения
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // установка режима ошибки PDO на исключение
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Подключено успешно";
} catch(PDOException $e) { // обработчик в случае ошибки подключения
  echo "Ошибка подключения: " . $e->getMessage();
}
?>

Объяснение примера: Класс исключения в PDO используется для обработки любых проблем, которые могут возникнуть в наших запросах к базе данных. Если в блоке try {} возникает исключение, сценарий прекращает выполнение и переходит непосредственно к первому блоку catch() {}.

Примечание: В приведенном выше примере PDO мы также указали базу данных (myDB). PDO требуется действующая база данных для подключения. Если база данных не указана, выдается исключение.

Когда мы устанавливаем соединение с базой данных MySQL из сценария PHP, мы также должны по завершению работы отключать или закрывать соединение с БД. Соединение с базой данных MySQL будет закрыто автоматически по завершении скрипта. Чтобы закрыть соединение раньше, используйте следующее (мы предположили, что ссылка на соединение хранится в переменной $conn):

Объектно-ориентированный MySQLi:

<?php
$conn->close();
?>

Процедура MySQLi:

<?php
mysqli_close($conn);
?>

PDO:

<?php
$conn = null;
?>