(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Ouvre une connexion à un serveur MySQL
Description
Style orienté objet
public
mysqli::real_connect(
string
$host
= ?,
string
$username
= ?,
string
$passwd
= ?,
string
$dbname
= ?,
int
$port
= ?,
string
$socket
= ?,
int
$flags
= ?
): bool
mysqli_real_connect(
mysqli
$link
,
string
$host
= ?,
string
$username
= ?,
string
$passwd
= ?,
string
$dbname
= ?,
int
$port
= ?,
string
$socket
= ?,
int
$flags
= ?
): bool
Cette fonction diffère de mysqli_connect() :
-
mysqli_real_connect() a besoin d'un objet créé
avec mysqli_init().
-
Avec la fonction mysqli_options(), vous pouvez
configurer différentes options de connexion.
-
Il y a un paramètre supplémentaire flags
.
Liste de paramètres
-
mysql
-
Seulement en style procédural : Un objet mysqli
retourné par la fonction mysqli_connect() ou par la
fonction mysqli_init().
-
host
-
Peut-être un nom d'hôte ou une adresse IP. En utilisant la valeur
null
ou la chaîne "localhost", l'hôte local est utilisé. Lorsque
c'est possible, les pipes seront utilisés à la place de la pile TCP/IP.
-
username
-
Le nom d'utilisateur MySQL.
-
passwd
-
Si non fourni ou null
, le serveur MySQL tentera de réaliser l'identification
avec les utilisateurs sans mot de passe. Cela permet à un nom
d'utilisateur d'être utilisé avec différentes droits, suivant
que le mot de passe est fourni ou pas.
-
dbname
-
Si fourni, ce paramètre indique le nom de la base de données
de travail par défaut.
-
port
-
Spécifie le numéro de port à utiliser pour se connecter au serveur MySQL.
-
socket
-
Spécifie le socket ou le pipe nommé qui doit être utilisé pour
établir la connexion.
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ètre
host
.
-
flags
-
Avec le paramètre flags
, vous pouvez configurer
différentes directives de connexion :
Options supportées
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().
Valeurs de retour
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Erreurs / Exceptions
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.
Exemples
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::init();
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
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
- mysqli_connect() - Alias de mysqli::__construct
- mysqli_init() - Initialise MySQLi et retourne un objet à utiliser avec mysqli_real_connect()
- mysqli_options() - Définit les options
- mysqli_ssl_set() - Utilisée pour établir une connexion sécurisée avec SSL
- mysqli_close() - Ferme une connexion