Spec-Zone .ru
спецификации, руководства, описания, API

22.9.1.3. Выбор API

Copyright 1997-2012 PHP Documentation Group.

PHP предлагает три различных API, чтобы соединиться с MySQL. Ниже мы показываем API, обеспеченные mysql, mysqli, и расширениями PDO. Каждый фрагмент кода создает соединение с сервером MySQL, работающим "на example.com" использовании имени пользователя "пользователь" и пароль "пароль". И запрос выполняется, чтобы приветствовать пользователя.

Пример 22.13. Сравнение трех API MySQL

<?php// mysqli$mysqli = new mysqli("example.com", "user", "password", "database");$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");$row = $result->fetch_assoc();echo htmlentities($row['_message']);// PDO$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");$row = $statement->fetch(PDO::FETCH_ASSOC);echo htmlentities($row['_message']);// mysql$c = mysql_connect("example.com", "user", "password");mysql_select_db("database");$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");$row = mysql_fetch_assoc($result);echo htmlentities($row['_message']);?>

Рекомендуемый API

Рекомендуется использовать или mysqli или расширения PDO_MySQL. Не рекомендуется использовать старое mysql расширение для новой разработки, поскольку это было осуждено с PHP 5.5.0 и будет удалено в будущем. Подробная матрица сравнения функции обеспечивается ниже. Общая производительность всех трех расширений, как полагают, о том же самом. Хотя производительность расширения вносит только часть полного времени выполнения веб-запроса PHP. Часто, воздействие столь же низко как 0.1 %.

Сравнение функции

ext/mysqli PDO_MySQL ext/mysql
Версия PHP представляется 5.0 5.1 2.0
Включенный с PHP 5.x Да Да Да
Статус разработки Активный Активный Обслуживание только
Жизненный цикл Активный Активный Осуждаемый
Рекомендуемый для новых проектов Да Да Нет
Интерфейс ООП Да Да Нет
Процедурный Интерфейс Да Нет Да
API поддерживает неблокирование, асинхронные запросы с mysqlnd Да Нет Нет
Персистентные Соединения Да Да Да
API поддерживает Наборы символов Да Да Да
API поддерживает сторону сервера Готовые Операторы Да Да Нет
API поддерживает сторону клиента Готовые Операторы Нет Да Нет
API поддерживает Хранимые процедуры Да Да Нет
API поддерживает Многократные Операторы Да Больше всего Нет
API поддерживает Транзакции Да Да Нет
Транзакциями можно управлять с SQL Да Да Да
Поддерживает весь MySQL 5.1 + функциональность Да Больше всего Нет