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_socketNULLPHP_INI_ALLДоступен начиная с 5.0.0.
mysqli.default_hostNULLPHP_INI_ALLДоступен начиная с PHP 5.0.0.
mysqli.default_userNULLPHP_INI_ALLДоступен начиная с PHP 5.0.0.
mysqli.default_pwNULLPHP_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

Содержание
mysqli_affected_rows -- Получить количество рядов, затронутых предыдущей операцией
mysqli_autocommit -- Включает или выключает автофиксацию изменений базы данных
mysqli_bind_param -- Синоним функции mysqli_stmt_bind_param()
mysqli_bind_result -- Синоним функции mysqli_stmt_bind_result()
mysqli_change_user -- Сменить пользователя соединения
mysqli_character_set_name -- Возвращает кодировку соединения с базой данных
mysqli_client_encoding -- Синоним функции mysqli_character_set_name()
mysqli_close -- Закрывает открытое ранее соединение с базой данных
mysqli_commit -- Фиксирует текущую транзакцию
mysqli_connect_errno -- Возвращает код ошибки последнего вызванного подключения
mysqli_connect_error -- Возвращает строку с описанием последней ошибки подключения
mysqli_connect -- Открывает новое соединение с сервером MySQL
mysqli_data_seek -- Перемещает указатель результата на выбранную строку
mysqli_debug -- Выполнение операций по отладке
mysqli_disable_reads_from_master -- Блокирует чтение с мастера
mysqli_disable_rpl_parse -- Блокировать разбор RPL
mysqli_dump_debug_info -- Вывод отладочной информации в журнал
mysqli_embedded_connect -- Открыть соединение к встроенному серверу mysql
mysqli_enable_reads_from_master -- Включает чтение с мастера
mysqli_enable_rpl_parse -- Включает разбор RPL
mysqli_errno -- Возвращает код ошибки выполнения последней операции
mysqli_error -- Возвращает строку с описанием последней ошибки
mysqli_escape_string -- Синоним функции mysqli_real_escape_string()
mysqli_execute -- Alias for mysqli_stmt_execute()
mysqli_fetch_array -- Fetch a result row as an associative, a numeric array, or both
mysqli_fetch_assoc -- Fetch a result row as an associative array
mysqli_fetch_field_direct --  Fetch meta-data for a single field
mysqli_fetch_field -- Returns the next field in the result set
mysqli_fetch_fields -- Returns an array of objects representing the fields in a result set
mysqli_fetch_lengths -- Returns the lengths of the columns of the current row in the result set
mysqli_fetch_object -- Returns the current row of a result set as an object
mysqli_fetch_row -- Get a result row as an enumerated array
mysqli_fetch -- Alias for mysqli_stmt_fetch()
mysqli_field_count -- Returns the number of columns for the most recent query
mysqli_field_seek --  Set result pointer to a specified field offset
mysqli_field_tell --  Get current field offset of a result pointer
mysqli_free_result -- Frees the memory associated with a result
mysqli_get_client_info -- Returns the MySQL client version as a string
mysqli_get_client_version -- Get MySQL client info
mysqli_get_host_info -- Returns a string representing the type of connection used
mysqli_get_metadata -- Alias for mysqli_stmt_result_metadata()
mysqli_get_proto_info -- Returns the version of the MySQL protocol used
mysqli_get_server_info -- Returns the version of the MySQL server
mysqli_get_server_version -- Returns the version of the MySQL server as an integer
mysqli_info -- Retrieves information about the most recently executed query
mysqli_init --  Initializes MySQLi and returns a resource for use with mysqli_real_connect()
mysqli_insert_id -- Returns the auto generated id used in the last query
mysqli_kill -- Asks the server to kill a MySQL thread
mysqli_master_query -- Enforce execution of a query on the master in a master/slave setup
mysqli_more_results -- Check if there are any more query results from a multi query
mysqli_multi_query -- Performs a query on the database
mysqli_next_result -- Prepare next result from multi_query
mysqli_num_fields --  Get the number of fields in a result
mysqli_num_rows --  Gets the number of rows in a result
mysqli_options -- Set options
mysqli_param_count -- Alias for mysqli_stmt_param_count()
mysqli_ping --  Pings a server connection, or tries to reconnect if the connection has gone down
mysqli_prepare --  Prepare a SQL statement for execution
mysqli_query -- Performs a query on the database
mysqli_real_connect -- Opens a connection to a mysql server
mysqli_real_escape_string --  Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection
mysqli_real_query -- Execute an SQL query
mysqli_report -- Enables or disables internal report functions
mysqli_rollback -- Rolls back current transaction
mysqli_rpl_parse_enabled -- Check if RPL parse is enabled
mysqli_rpl_probe -- RPL probe
mysqli_rpl_query_type -- Returns RPL query type
mysqli_select_db -- Selects the default database for database queries
mysqli_send_long_data -- Alias for mysqli_stmt_send_long_data()
mysqli_send_query -- Send the query and return
mysqli_server_end -- Shut down the embedded server
mysqli_server_init -- Initialize embedded server
mysqli_set_charset -- Sets the default client character set
mysqli_set_opt -- Alias of mysqli_options()
mysqli_sqlstate -- Returns the SQLSTATE error from previous MySQL operation
mysqli_ssl_set -- Used for establishing secure connections using SSL
mysqli_stat -- Gets the current system status
mysqli_stmt_affected_rows -- Returns the total number of rows changed, deleted, or inserted by the last executed statement
mysqli_stmt_bind_param -- Binds variables to a prepared statement as parameters
mysqli_stmt_bind_result -- Binds variables to a prepared statement for result storage
mysqli_stmt_close -- Closes a prepared statement
mysqli_stmt_data_seek -- Seeks to an arbitray row in statement result set
mysqli_stmt_errno -- Returns the error code for the most recent statement call
mysqli_stmt_error -- Returns a string description for last statement error
mysqli_stmt_execute -- Executes a prepared Query
mysqli_stmt_fetch --  Fetch results from a prepared statement into the bound variables
mysqli_stmt_free_result -- Frees stored result memory for the given statement handle
mysqli_stmt_init --  Initializes a statement and returns an object for use with mysqli_stmt_prepare
mysqli_stmt_num_rows -- Return the number of rows in statements result set
mysqli_stmt_param_count -- Returns the number of parameter for the given statement
mysqli_stmt_prepare --  Prepare a SQL statement for execution
mysqli_stmt_reset -- Resets a prepared statement
mysqli_stmt_result_metadata -- Returns result set metadata from a prepared statement
mysqli_stmt_send_long_data -- Send data in blocks
mysqli_stmt_sqlstate -- Returns SQLSTATE error from previous statement operation
mysqli_stmt_store_result -- Transfers a result set from a prepared statement
mysqli_store_result -- Transfers a result set from the last query
mysqli_thread_id -- Returns the thread ID for the current connection
mysqli_thread_safe -- Returns whether thread safety is given or not
mysqli_use_result -- Initiate a result set retrieval
mysqli_warning_count -- Returns the number of warnings from the last query for the given link