PHPKonf Istanbul PHP Conference 2019 - Call for Papers

mysqli::options

mysqli_options

(PHP 5, PHP 7)

mysqli::options -- mysqli_optionsDéfinit les options

Description

Style orienté objet

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

Style procédural

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

Utile pour définir des options de connexion et ainsi affecter le comportement de la connexion courante.

Cette fonction peut être appelée plusieurs fois pour définir plusieurs options.

mysqli_options() doit être appelée après mysqli_init() et avant mysqli_real_connect().

Liste de paramètres

link

Seulement en style procédural : Un identifiant de lien retourné par la fonction mysqli_connect() ou par la fonction mysqli_init()

option

L'option que vous voulez définir. Il peut prendre une des valeurs suivantes :

Options valides
Nom Description
MYSQLI_OPT_CONNECT_TIMEOUT délai maximal de la connexion en secondes (supporté sous Windows avec TCP/IP depuis PHP 5.3.1)
MYSQLI_OPT_LOCAL_INFILE active/désactive l'utilisation de LOAD LOCAL INFILE
MYSQLI_INIT_COMMAND commande à exécuter après la connexion au serveur MySQL
MYSQLI_READ_DEFAULT_FILE Lit les options depuis le nom de l'option plutôt que du fichier my.cnf
MYSQLI_READ_DEFAULT_GROUP Lit les options du groupe depuis my.cnf ou depuis le fichier spécifié avec MYSQL_READ_DEFAULT_FILE.
MYSQLI_SERVER_PUBLIC_KEY Fichier contenant la clé publique RSA utilisée avec l'authentification basée sur SHA-256.
MYSQLI_OPT_NET_CMD_BUFFER_SIZE La taille du buffer interne de commande/réseau. Uniquement valide pour mysqlnd.
MYSQLI_OPT_NET_READ_BUFFER_SIZE Taille, en octets, maximal de la partie à lire lors de la lecture du corps d'un paquet de commande MySQL. Uniquement valide pour mysqlnd.
MYSQLI_OPT_INT_AND_FLOAT_NATIVE Convertie les colonnes entières et à virgules flottantes en nombre PHP. Uniquement valide pour mysqlnd.
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT

value

La valeur pour l'option.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Historique

Version Description
5.5.0 Les options MYSQLI_SERVER_PUBLIC_KEY et MYSQLI_SERVER_PUBLIC_KEY ont été ajoutées.
5.3.0 Les options MYSQLI_OPT_INT_AND_FLOAT_NATIVE, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, MYSQLI_OPT_NET_READ_BUFFER_SIZE, et MYSQLI_OPT_SSL_VERIFY_SERVER_CERT ont été ajoutées.

Exemples

Voir mysqli_real_connect().

Notes

Note:

MySQLnd s'occupe toujours du jeu de caractères par défaut du serveur. Celui-ci est envoyé durant la négociation de la connexion ou l'authentification.

Libmysqlclient utilise le jeu de caractères par défaut de my.cnf ou via par un appel à mysqli_options() avant mysqli_real_connect(), mais après mysqli_init().

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
4
php at darkain dot com
4 months 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
5
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
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