(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Ouvre une connexion à un serveur MySQL
Style orienté objet
$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
,$flags
= 0Style procédural
$mysql
,$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
,$flags
= 0mysqli_real_connect() établit une connexion avec un serveur MySQL.
Cette fonction diffère de mysqli_connect() :
mysqli_real_connect() nécessite un objet valide qui doit être créé par la fonction mysqli_init().
Avec la fonction mysqli_options(), vous pouvez configurer différentes options de connexion.
Il y a un paramètre supplémentaire flags
.
mysql
Seulement en style procédural : Un objet mysqli retourné par la fonction mysqli_connect() ou mysqli_init().
hostname
Peut-être un nom d'hôte ou une adresse IP. Lorsqu'on passe null
, la valeur est récupérée depuis
mysqli.default_host.
Si possible, des pipes seront utilisés au lieu du protocole TCP/IP.
Le protocole TCP/IP est utilisé si un nom d'hôte et un numéro de port sont fournis ensemble, par exemple localhost:3308
.
username
Le nom d'utilisateur MySQL ou null
pour supposer le nom d'utilisateur en fonction de l'option ini
mysqli.default_user.
password
Le mot de passe MySQL ou null
pour supposer le mot de passe en fonction de l'option ini
mysqli.default_pw.
database
La base de données par défaut à utiliser lors de l'exécution de requêtes ou null
.
port
Le numéro de port auquel tenter de se connecter au serveur MySQL ou null
pour supposer le port en fonction de l'option ini
mysqli.default_port.
socket
Le socket ou le pipe nommé qui devrait être utilisé, ou null
pour supposer le socket en fonction de l'option ini
mysqli.default_socket.
Note:
Spécifier explicitement le paramètre
socket
ne détermine pas le type de méthode utilisée lors de la connexion à MySQL. La méthode est déterminée par le paramètrehostname
.
flags
Avec le paramètre flags
, vous pouvez configurer
différentes directives de connexion :
Nom | Description |
---|---|
MYSQLI_CLIENT_COMPRESS |
Utilise le protocole compressé |
MYSQLI_CLIENT_FOUND_ROWS |
Retourne le nombre de ligne trouvées, pas le nombre de lignes affectées. |
MYSQLI_CLIENT_IGNORE_SPACE |
Autorise les espaces entre les noms de fonctions et les arguments. Cela force les noms de fonctions à être des mots réservés. |
MYSQLI_CLIENT_INTERACTIVE |
Autorise interactive_timeout secondes (au lieu de
wait_timeout secondes) d'inactivité avant de fermer
la connexion.
|
MYSQLI_CLIENT_SSL |
Utilise le chiffrement SSL |
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT |
Identique à MYSQLI_CLIENT_SSL , mais désactive la validation
des certificats SSL fournis. Cette constante n'est prévue que pour les installations
utilisant le driver MySQL natif et MySQL 5.6 ou supérieur.
|
Note:
Pour des raisons de sécurité, l'option
MULTI_STATEMENT
n'est pas supportée en PHP. Si vous voulez exécuter plusieurs commandes, utilisez la fonction mysqli_multi_query().
Si le rapport d'erreurs mysqli est activé (MYSQLI_REPORT_ERROR
) et que l'opération demandée échoue,
un avertissement est généré. Si, en plus, le mode est défini sur MYSQLI_REPORT_STRICT
,
une mysqli_sql_exception est lancée à la place.
Version | Description |
---|---|
7.4.0 | Tous les paramètres sont désormais nullable. |
Exemple #1 Exemple avec mysqli::real_connect()
Style orienté objet
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Succès... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Style orienté objet, avec extension de la classe mysqli
<?php
class foo_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db) {
parent::__construct();
if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
if (!parent::real_connect($host, $user, $pass, $db)) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}
$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');
echo 'Succès... ' . $db->host_info . "\n";
$db->close();
?>
Style procédural
<?php
$link = mysqli_init();
if (!$link) {
die('mysqli_init failed');
}
if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Setting MYSQLI_INIT_COMMAND failed');
}
if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}
if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Succès... ' . mysqli_get_host_info($link) . "\n";
mysqli_close($link);
?>
Les exemples ci-dessus vont afficher :
Succès... MySQL host info: localhost via TCP/IP
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().