Руководство по PHP
Пред. |  | След.

# XCVII. Расширение MySQL (Improved)

# Введение

Расширение mysqli позволяет вам получить доступ к функциональности, которую предоставляет MySQL версии 4.1 и выше. Больше информации о сервере баз данных MySQL вы можете получить по адресу http://www.mysql.com/.

Документация MySQL находится по адресу http://dev.mysql.com/doc/.

Некоторые части данной документации включены из руководства по MySQL с разрешения MySQL AB.

# Требования

Чтобы эти функции были доступны, PHP должен быть собран с поддержкой расширения mysqli.

> Замечание: Расширение mysqli разработано для работы с MySQL версии 4.1.3 и выше. Для работы с более старыми версиями, обратитесь к документации к расширению MySQL.

# Установка

Для установки расширения mysqli для PHP, используйте конфигурационную директиву `--with-mysqli=mysql_config_path/mysql_config`, где`mysql_config_path` - путь к утилите `mysql_config`, которая поставляется с MySQL версии 4.1 и больше.

Если вы хотите установить расширение mysql вместе с mysqli, вы должны использовать одинаковые клиентские библиотеки во избежание возможных конфликтов.

# Настройка во время выполнения

Поведение этих функций зависит от установок в `php.ini`.

Таблица 1. MySQLi Параметры конфигурации

Имя | Значение по-умолчанию | Область изменения | История изменений
--- | --- | --- | ---
mysqli.max_links | "-1" | PHP_INI_SYSTEM | Доступен начиная с PHP 5.0.0.
mysqli.default_port | "3306" | PHP_INI_ALL | Доступен начиная с PHP 5.0.0.
mysqli.default_socket | NULL | PHP_INI_ALL | Доступен начиная с 5.0.0.
mysqli.default_host | NULL | PHP_INI_ALL | Доступен начиная с PHP 5.0.0.
mysqli.default_user | NULL | PHP_INI_ALL | Доступен начиная с PHP 5.0.0.
mysqli.default_pw | NULL | PHP_INI_ALL | Доступен начиная с PHP 5.0.0.

Дальнейшие детали и определения PHP_INI_* констант смотрите в разделе конфигурационные изменения.

Краткое разъяснение конфигурационных директив.

`mysqli.max_links` integer

  Максимальное число соединений MySQL на процесс.

`mysqli.default_port` string

  TCP порт, используемый по умолчанию для соединения с сервером баз данных если другое значение явно не указано. Если значение по умолчанию не указано, оно будет получено из переменной среды окружения `MYSQL_TCP_PORT`, директивы `mysql-tcp` в файле `/etc/services` или константы `MYSQL_PORT`, которая задаётся во время компиляции, в указанном порядке. Win32 использует только константу `MYSQL_PORT`.

`mysqli.default_socket` string

  Имя сокета по умолчанию, которое используется для соединения с локальной базой данных если имя сокета было не указано явно.

`mysqli.default_host` string

  Имя сервера, которое используется если имя не было указано явно. Это имя не используется в безопасном режиме.

`mysqli.default_user` string

  Имя пользователя по умолчанию, используемое если имя не было указано явно. Игнорируется в безопасном режиме.

`mysqli.default_pw` string

  Пароль по умолчанию, используемый если пароль не был явно указан. Игнорируется в безопасном режиме.

# Предопределенные классы

## mysqli

Представляет соединение между PHP и базой данных MySQL.

### Конструктор

- mysqli - конструктор нового объекта mysqli

### Методы

- autocommit - включает или выключает автофиксацию изменений базы данных

- change_user - изменение пользователя для выбранного соединения с базой данных

- character_set_name - возвращает кодировку по-умолчанию (default character set) для соединения с базой данных

- close - закрывает открытое ранее соединение

- commit - фиксирует текущую транзакцию

- connect - открывает новое соединение с сервером баз данных MySQL

- debug - выполняет операции по отладке

- dump_debug_info - возвращает отладочную информацию

- get_client_info - возвращает версию клиента

- get_host_info - возвращает используемый тип соединения

- get_server_info - возвращает информацию о сервере MySQL

- get_server_version - возвращает версию сервера MySQL

- init - инициализирует объект mysqli

- info - получает информацию о последнем выполненном запросе

- kill - требует от сервера убить mysql-поток

- multi_query - выполняет множественный запрос

- more_results - проверяет наличие дополнительных результатов в выполняемом мульти-запросе

- next_result - получает следующий результат в выполняемом мульти-запросе

- options - устанавливает опции

- ping - проверяет соединение с сервером или переподключается, если соединение недоступно

- prepare - подготавливает SQL-запрос

- query - выполняет запрос

- real_connect - создает соединение с сервером MySQL

- escape_string - экранирует спецсимволы в строке для использования в SQL-выражениях

- rollback - откат текущей транзакции

- select_db - выбирает базу данных по-умолчанию

- set_charset - устанавливает кодировку клиента по-умолчанию

- ssl_set - устанавливает параметры ssl

- stat - получает текущее состояние системы

- stmt_init - инициализирует выражение для использования с mysqli_stmt_prepare

- store_result - получает набор данных от последнего запроса

- thread_safe - возвращает информацию о том, собран ли клиент с поддеркой надежных потоков

- use_result - получает небуферизованный набор данных из последнего запроса

### Свойства

- affected_rows - получает количество затронутых рядов предыдущей MySQL-операцией

- client_info - возвращает версию MySQL-клиента в виде строки

- client_version - возвращает версию MySQL-клиента в целочисленном виде

- errno - возвращает номер ошибки для последнего вызова функции

- error - возвращает строку, содержащую текст ошибки для последнего вызова функции

- field_count - возвращает количество колонок в последней выборке

- host_info - возвращает строку с представлением используемого типа соединения

- info - возвращает информацию о последнем выполненном запросе

- insert_id - возвращает автоматически созданный id, использованый в последнем запросе

- protocol_version - возвращает версию использованного протокола MySQL

- server_info - возвращает строку, которая содержит номер версии сервера

- server_version - возвращает целочисленный номер версии сервера

- sqlstate - возвращает строку, содержащую код ошибки SQLSTATE для последней ошибки

- thread_id - возвращает ID потока для текущего соединения

- warning_count - возвращает количество предупреждений (warnings), сгенерированных во время выполнения последнего SQL-выражения

## mysqli_stmt

Представляет подготовленное выражение.

### Методы

- bind_param - присваивает переменные подготовленному выражению

- bind_result - присваивает переменные подготовленному выражению для хранилища результатов

- close - закрывает подготовленное выражение

- data_seek - переходит на произвольную строку в наборе данных выражения

- execute - выполняет подготовленное выражение

- fetch - получает результат из подготовленного выражения в связанные переменные

- free_result - освобождает занятую результатом память для переданного дескриптора выражения

- prepare - подготавливает SQL-запрос

- reset - сбрасывает подготовленное выражение

- result_metadata - получает набор данных из подготовленного выражения для получения метаинформации

- send_long_data - отправляет информацию на сервер по частям

- store_result - полностью буферизирует набор данных из подготовленного запроса

### Свойства

- affected_rows - возвращает количество затронутых в результате последнего выполнения выражения рядов

- errno - возвращает код ошибки для последнего выполненного выражения

- error - возвращает текст ошибки для последнего выполненного выражения

- field_count - возвращает количество полей в результате запроса

- id - возвращает идентификатор выражения

- insert_id - возвращает значение, созданное подготовленным выражением поля с AUTO_INCREMENT

- num_rows - возвращает количество рядов в результате запроса

- param_count - возвращает количество параметров для переданного подготовленного выражения

- sqlstate - возвращает строку, содержащую код ошибки SQLSTATE для последнего вызова выражения

## mysqli_result

Представляет набор данных, полученныйх в результате запроса к базе данных.

### Методы

- close - закрывает набор данных

- data_seek - передвигает внутренний указатель результата

- fetch_array - получает ряд из набора данных в виде ассоциативного массива, нумерованного массива, или обоих

- fetch_assoc - получает ряд из набора данных в виде ассоциативного массива

- fetch_field - получает информацию о столбце из набора данных

- fetch_fields - получает информацию о всех столбцах из набора данных

- fetch_field_direct - получает информацию об определенном столбце

- fetch_object - получает ряд из набора данных в виде объекта

- fetch_row - получает ряд из набора данных в виде нумерованного массива

- field_seek - установить указатель на результат смещенным на определенное количество полей

- free_result - освобождает память, занимаемую результатом запроса

### Свойства

- current_field - возвращает смещение текущего указателя

- field_count - возвращает количество полей в наборе данных

- lengths - возвращает массив значений длины столбцов

- num_rows - возвращает количество рядов в наборе данных

- type - возвращает `MYSQLI_STORE_RESULT` или `MYSQLI_USE_RESULT`

# Предопределенные константы

Таблица 2. Константы MySQLi

Имя | Описание
--- | ---
`MYSQLI_READ_DEFAULT_GROUP` (integer) | Читать опции из указанной группы в файле `my.cnf' или файле указанном с помощью `MYSQLI_READ_DEFAULT_FILE`
`MYSQLI_READ_DEFAULT_FILE` (integer) | Читать опции из указанного файла вместо `my.cnf`
`MYSQLI_OPT_CONNECT_TIMEOUT` (integer) | Тайм-аут подключения в секундах.
`MYSQLI_OPT_LOCAL_INFILE` (integer) | Включает команду `LOAD LOCAL INFILE`.
`MYSQLI_INIT_COMMAND` (integer) | Команда, которая будет выполнена при подключении к серверу MySQL. Эта команда будет повторно вызвана при переподключении.
`MYSQLI_CLIENT_SSL` (integer) | Использовать SSL (шифрованый протокол). Эта опция не может быть уставовлена приложениями; она устанавливается внутри библиотеки клиента MySQL.
`MYSQLI_CLIENT_COMPRESS` (integer) | Использовать компрессию.
`MYSQLI_CLIENT_INTERACTIVE` (integer) | Ждать `interactive_timeout` секунд (вместо `wait_timeout`) бездействия перед закрытием соединения. Переменная сессии клиента `wait_timeout` будет установлена в значение переменной сессии `interactive_timeout`.
`MYSQLI_CLIENT_IGNORE_SPACE` (integer) | Разрешить пробелы после имен функций. Делает все имена функций зарезервированными словами.
`MYSQLI_CLIENT_NO_SCHEMA` (integer) | Запретить синтаксис db_name.tbl_name.col_name.
`MYSQLI_CLIENT_MULTI_QUERIES` (integer) |
`MYSQLI_STORE_RESULT` (integer) | Для использования буферизации наборов данных.
`MYSQLI_USE_RESULT` (integer) | Для использования небуферизированных наборов данных.
`MYSQLI_ASSOC` (integer) | Результат возвращается в виде ассоциативного массива с именами полей в качестве индексов.
`MYSQLI_NUM` (integer) | Результат возвращается в виде индексного массива.
`MYSQLI_BOTH` (integer) | Результат возвращается в виде массива, который содержит как числовой, так ассоциативный (с именами полей) индексы.
`MYSQLI_NOT_NULL_FLAG` (integer) | Информирует о том, что поле определено как `NOT NULL`.
`MYSQLI_PRI_KEY_FLAG` (integer) | Поле является частью первичного индекса.
`MYSQLI_UNIQUE_KEY_FLAG` (integer) | Поле является частью уникального индекса.
`MYSQLI_MULTIPLE_KEY_FLAG` (integer) | Поле является частью индекса.
`MYSQLI_BLOB_FLAG` (integer) | Поле определено как `BLOB`.
`MYSQLI_UNSIGNED_FLAG` (integer) | Поле определено как `UNSIGNED`.
`MYSQLI_ZEROFILL_FLAG` (integer) | Поле определено как `ZEROFILL`.
`MYSQLI_AUTO_INCREMENT_FLAG` (integer) | Поле определено как `AUTO_INCREMENT`.
`MYSQLI_TIMESTAMP_FLAG` (integer) | Поле определено как `TIMESTAMP`.
`MYSQLI_SET_FLAG` (integer) | Поле определено как `SET`.
`MYSQLI_NUM_FLAG` (integer) | Поле определено как `NUMERIC`.
`MYSQLI_PART_KEY_FLAG` (integer) | Поле является честью мультииндекса.
`MYSQLI_GROUP_FLAG` (integer) | Поле является частью `GROUP BY`.
`MYSQLI_TYPE_DECIMAL` (integer) | Поле определено как `DECIMAL`.
`MYSQLI_TYPE_NEWDECIMAL` (integer) | Математическая точность полей `DECIMAL` или `NUMERIC` (MySQL 5.0.3 и выше).
`MYSQLI_TYPE_BIT` (integer) | Поле определено как `BIT` (MySQL 5.0.3 и выше).
`MYSQLI_TYPE_TINY` (integer) | Поле определено как `TINYINT`.
`MYSQLI_TYPE_SHORT` (integer) | Поле определено как `INT`.
`MYSQLI_TYPE_LONG` (integer) | Поле определено как `INT`.
`MYSQLI_TYPE_FLOAT` (integer) | Поле определено как `FLOAT`.
`MYSQLI_TYPE_DOUBLE` (integer) | Поле определено как `DOUBLE`.
`MYSQLI_TYPE_NULL` (integer) | Поле определено как `DEFAULT NULL`.
`MYSQLI_TYPE_TIMESTAMP` (integer) | Поле определено как `TIMESTAMP`.
`MYSQLI_TYPE_LONGLONG` (integer) | Поле определено как `BIGINT`.
`MYSQLI_TYPE_INT24` (integer) | Поле определено как `MEDIUMINT`.
`MYSQLI_TYPE_DATE` (integer) | Поле определено как `DATE`.
`MYSQLI_TYPE_TIME` (integer) | Поле определено как `TIME`.
`MYSQLI_TYPE_DATETIME` (integer) | Поле определено как `DATETIME`.
`MYSQLI_TYPE_YEAR` (integer) | Поле определено как `YEAR`.
`MYSQLI_TYPE_NEWDATE` (integer) | Поле определено как `DATE`.
`MYSQLI_TYPE_ENUM` (integer) | Поле определено как `ENUM`.
`MYSQLI_TYPE_SET` (integer) | Поле определено как `SET`.
`MYSQLI_TYPE_TINY_BLOB` (integer) | Поле определено как `TINYBLOB`.
`MYSQLI_TYPE_MEDIUM_BLOB` (integer) | Поле определено как `MEDIUMBLOB`.
`MYSQLI_TYPE_LONG_BLOB` (integer) | Поле определено как `LONGBLOB`.
`MYSQLI_TYPE_BLOB` (integer) | Поле определено как `BLOB`.
`MYSQLI_TYPE_VAR_STRING` (integer) | Поле определено как `VARCHAR`.
`MYSQLI_TYPE_STRING` (integer) | Поле определено как `CHAR`.
`MYSQLI_TYPE_GEOMETRY` (integer) | Поле определено как `GEOMETRY`.
`MYSQLI_NEED_DATA` (integer) | Имеются еще данные, доступные для связанных переменных.
`MYSQLI_NO_DATA` (integer) | Больше нет доступных данных для связанных переменных.
`MYSQLI_DATA_TRUNCATED` (integer) | Произошло урезание данных. Доступно начиная с PHP 5.1.0 и MySQL 5.0.5.

# Examples

Все примеры, приведенные в документации к MySQLI используют базу данных world от MySQL AB. Базу данных world вы можете найти по адресуhttp://dev.mysql.com/get/Downloads/Manual/world.sql.gz/from/pick

Пред. | Начало | След.
PDO_MYSQL DSN | Уровень выше | mysqli_affected_rows