(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Establece una conexión con un servidor MySQL
Estilo orientado a objetos
$hostname = null,$username = null,$password = null,$database = null,$port = null,$socket = null,$flags = 0Estilo por procedimientos
$mysql,$hostname = null,$username = null,$password = null,$database = null,$port = null,$socket = null,$flags = 0mysqli_real_connect() establece una conexión con un servidor MySQL.
Esta función difiere de mysqli_connect():
mysqli_real_connect() requiere un objeto válido que debe ser creado por la función mysqli_init().
Con la función mysqli_options(), se pueden configurar diferentes opciones de conexión.
Existe un parámetro adicional flags.
linkSólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
hostname
Puede ser un nombre de host o una dirección IP. Al pasar null, el valor se recupera desde
mysqli.default_host.
Si es posible, se utilizarán pipes en lugar del protocolo TCP/IP.
El protocolo TCP/IP se utiliza si se proporciona un nombre de host y un número de puerto juntos, por ejemplo localhost:3308.
username
El nombre de usuario MySQL o null para asumir el nombre de usuario según la opción ini
mysqli.default_user.
password
La contraseña MySQL o null para asumir la contraseña según la opción ini
mysqli.default_pw.
database
La base de datos por defecto a utilizar al ejecutar consultas o null.
port
El número de puerto al que intentar conectarse al servidor MySQL o null para asumir el puerto según la opción ini
mysqli.default_port.
socket
El socket o el pipe nombrado que debería utilizarse, o null para asumir el socket según la opción ini
mysqli.default_socket.
Nota:
Especificar explícitamente el parámetro
socketno determina el tipo de método utilizado al conectarse a MySQL. El método se determina por el parámetrohostname.
flags
Con el parámetro flags, se pueden configurar
diferentes directivas de conexión:
| Nombre | Descripción |
|---|---|
MYSQLI_CLIENT_COMPRESS |
Utiliza el protocolo comprimido |
MYSQLI_CLIENT_FOUND_ROWS |
Devuelve el número de filas encontradas, no el número de filas afectadas. |
MYSQLI_CLIENT_IGNORE_SPACE |
Permite espacios entre los nombres de funciones y los argumentos. Esto fuerza a que los nombres de funciones sean palabras reservadas. |
MYSQLI_CLIENT_INTERACTIVE |
Permite interactive_timeout segundos (en lugar de
wait_timeout segundos) de inactividad antes de cerrar
la conexión.
|
MYSQLI_CLIENT_SSL |
Utiliza el cifrado SSL |
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT |
Igual que MYSQLI_CLIENT_SSL, pero desactiva la validación
de los certificados SSL proporcionados. Esta constante está prevista solo para instalaciones
que utilizan el driver MySQL nativo y MySQL 5.6 o superior.
|
Nota:
Por razones de seguridad, la opción
MULTI_STATEMENTno es soportada en PHP. Si se desea ejecutar múltiples comandos, utilice la función mysqli_multi_query().
If mysqli error reporting is enabled (MYSQLI_REPORT_ERROR) and the requested operation fails,
a warning is generated. If, in addition, the mode is set to MYSQLI_REPORT_STRICT,
a mysqli_sql_exception is thrown instead.
| Versión | Descripción |
|---|---|
| 7.4.0 | Todos los parámetros son ahora nullable. |
Ejemplo #1 Ejemplo con mysqli::real_connect()
Estilo orientado a objetos
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init falló');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Configuración de MYSQLI_INIT_COMMAND falló');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Configuración de MYSQLI_OPT_CONNECT_TIMEOUT falló');
}
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
die('Error de conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Éxito... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>Estilo orientado a objetos, con extensión de la clase 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('Configuración de MYSQLI_INIT_COMMAND falló');
}
if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Configuración de MYSQLI_OPT_CONNECT_TIMEOUT falló');
}
if (!parent::real_connect($host, $user, $pass, $db)) {
die('Error de conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}
$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');
echo 'Éxito... ' . $db->host_info . "\n";
$db->close();
?>Estilo por procedimientos
<?php
$link = mysqli_init();
if (!$link) {
die('mysqli_init falló');
}
if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Configuración de MYSQLI_INIT_COMMAND falló');
}
if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Configuración de MYSQLI_OPT_CONNECT_TIMEOUT falló');
}
if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
die('Error de conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Éxito... ' . mysqli_get_host_info($link) . "\n";
mysqli_close($link);
?>El resultado de los ejemplos sería:
Éxito... MySQL host info: localhost via TCP/IP
Nota:
MySQLnd siempre utiliza el juego de caracteres de idioma predeterminado. El juego de caracteres se envía en la autentificación/acuerdo que se produce durante la conexión, que utilizará mysqlnd.
Libmysqlclient utiliza el juego de caracteres predeterminado definido en my.cnf o se puede establecer llamando mysqli_options() antes de user mysqli_real_connect(), pero después de mysqli_init().