SunshinePHP 2019 CFP Started

mysqli::options

mysqli_options

(PHP 5, PHP 7)

mysqli::options -- mysqli_optionsЗадание настроек

Описание

Объектно-ориентированный стиль

bool mysqli::options ( int $option , mixed $value )

Процедурный стиль

bool mysqli_options ( mysqli $link , int $option , mixed $value )

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

Эту функцию можно вызывать неоднократно, чтобы задать несколько настроек.

mysqli_options() нужно вызывать после mysqli_init() и перед mysqli_real_connect().

Список параметров

link

Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()

option

Настройка, которую требуется задать. Это может быть одно из следующих значений:

Допустимые настройки
Имя Описание
MYSQLI_OPT_CONNECT_TIMEOUT таймаут соединения в секундах (поддерживается в Windows с TCP/IP, начиная с PHP 5.3.1)
MYSQLI_OPT_LOCAL_INFILE включение/выключение LOAD LOCAL INFILE
MYSQLI_INIT_COMMAND команда, которую требуется выполнить сразу после подключения к серверу MySQL
MYSQLI_READ_DEFAULT_FILE Читать настройки из именованного файла вместо my.cnf
MYSQLI_READ_DEFAULT_GROUP Читать настройки из именованной группы в файле my.cnf или другом файле, заданным настройкой MYSQL_READ_DEFAULT_FILE.
MYSQLI_SERVER_PUBLIC_KEY Файл публичного ключа RSA для авторизации на базе SHA-2560.
MYSQLI_OPT_NET_CMD_BUFFER_SIZE Размер внутреннего коммандного/сетевого буфера. Работает только с mysqlnd.
MYSQLI_OPT_NET_READ_BUFFER_SIZE Максимальный размер блока для чтения в байтах при чтении командного пакета MySQL. Работает только с mysqlnd.
MYSQLI_OPT_INT_AND_FLOAT_NATIVE Преобразовывает столбцы типов integer и float к числам PHP, а не строкам. Работает только с mysqlnd.
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT

value

Значение настройки.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.5.0 Добавлены опции MYSQLI_SERVER_PUBLIC_KEY и MYSQLI_SERVER_PUBLIC_KEY.
5.3.0 Добавлены опции MYSQLI_OPT_INT_AND_FLOAT_NATIVE, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, MYSQLI_OPT_NET_READ_BUFFER_SIZE, и MYSQLI_OPT_SSL_VERIFY_SERVER_CERT.

Примеры

См. mysqli_real_connect().

Примечания

Замечание:

MySQLnd всегда подразумевает кодировку, которую использует по умолчанию сервер. Эта кодировка передается во время установки соединения/авторизации, которые использует mysqlnd.

Libmysqlclient по умолчанию использует кодировку, установленную в my.cnf или специальным вызовом mysqli_options() до использования mysqli_real_connect(), но после mysqli_init().

Смотрите также

  • mysqli_init() - Инициализирует MySQLi и возвращает ресурс для использования в функции mysqli_real_connect()
  • mysqli_real_connect() - Устанавливает соединение с сервером mysql

add a note add a note

User Contributed Notes 3 notes

up
4
fluppy
11 years ago
Here es little example to create a SSL Connection

<?php

$db
= mysqli_init();

/*
When you want so use a separate cnf
$test = $db->options(MYSQLI_EAD_DEFAULT_FILE,'myother.cnf');
*/

$db->ssl_set('server-key.pem','server-cert.pem',
'cacert.pem',NULL,NULL);

$db->real_connect('localhost','root','','mydb');

//Here some query

$db->close();

?>
up
1
php at darkain dot com
24 days ago
There is an undocumented option: MYSQLI_OPT_READ_TIMEOUT. This is similar to MYSQLI_OPT_CONNECT_TIMEOUT in theory, but has a slightly different application. Connection timeout only specifies the wait time for the initial TCP connection. Once that is created, the timeout no longer applies. Read timeout, however, is from the time the TCP connection is created until the first packet of actual data is received. There are instances where a TCP connection can be established, but the MySQL server stalls indefinitely, preventing execution from ever returning to PHP. Specifying a read timeout alleviates this condition, whereas connect timeout wouldn't.

If the MYSQLI_OPT_READ_TIMEOUT constant isn't defined, it is still supported on versions where that isn't the case. You can define it yourself in older PHP versions with the following code.

<?php
if (!defined('MYSQLI_OPT_READ_TIMEOUT')) {
   
define ('MYSQLI_OPT_READ_TIMEOUT', 11);
}
?>

You can then use read timeout the same way you could a connect timeout as follows. Please note that since these are two different timeout values for two different parts of the entire connection process, the timeouts do stack (eg: 10 seconds connect timeout + 10 seconds read timeout = maximum possible timeout of 20 seconds)

<?php
//create the object
$connection = mysqli_init();

//specify the connection timeout
$connection->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10);

//specify the read timeout
$connection->options(MYSQLI_OPT_READ_TIMEOUT, 10);

//initiate the connection to the server, using both previously specified timeouts
$connection->real_connect('server', 'user', 'pass', 'database');
?>
up
0
king at bobfish dot org
10 years ago
Example on using mysqli_options to increase size of max_allowed_packet for working with big blobs.

function dbConnect()
{
   $user = 'jomama';
   $pass = 'cartoon';
   $dbName = 'LifeCycle';
   $host = 'localhost';

   $mysqli = mysqli_init();
   mysqli_options($mysqli,MYSQLI_READ_DEFAULT_GROUP,
                                    "max_allowed_packet=50M");
   mysqli_real_connect($mysqli,$host, $user, $pass,$dbName)
                  or die ('<P>Unable to connect</P>');

   return $mysqli;
}
To Top