# mysqli::real_connect

# mysqli_real_connect

(PHP 5, PHP 7, PHP 8)

mysqli::real_connect -- mysqli_real_connect — Abre una conexión a un servidor mysql

### Descripción

Estilo orientado a objetos

mysqli::real_connect(
string `$host` = ?,
string `$username` = ?,
string `$passwd` = ?,
string `$dbname` = ?,
int `$port` = ?,
string `$socket` = ?,
int `$flags` = ?
): bool

Estilo por procedimientos

mysqli_real_connect(
mysqli `$link`,
string `$host` = ?,
string `$username` = ?,
string `$passwd` = ?,
string `$dbname` = ?,
int `$port` = ?,
string `$socket` = ?,
int `$flags` = ?
): bool

Establece una conexión a un motor de bases de datos MySQL.

Esta función difiere de mysqli_connect() en:

- mysqli_real_connect() necesita un objeto válido que haya sido creado por la función mysqli_init().

- Con la función mysqli_options() se pueden establecer varias opciones de conexión.

- Existe un parámetro `flags`.

### Parámetros

`link`

  Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()

`host`

  Puede ser un nombre de host o una dirección IP. Si se pasa el valor `null` o la cadena "localhost" a este parámetro, se asume el host local. Cuando sea posible se usarán tuberías en lugar del protocolo TCP/IP.

`username`

  El nombre de usuario de MySQL.

`passwd`

  Si se proporciona o es `null`, el servidor MySQL intentará autenticar al usuario con los registros de usuarios que solamente no tengan contraseña. Esto permite a un nombre de usuario que sea usado con diferentes permisos (dependiendo de si se proporciona una contraseña o no).

`dbname`

  Si se proporciona, especificará la base de datos predeterminada a ser usada para realizar consultas.

`port`

  Especifica el número de puerto con el que intentar conectarse al servidor MySQL.

`socket`

  Especifica el socket o la tubería con nombre que debería usarse.

  > Nota:

  > Especificar el parámetro `socket` no determinará explícitamente el tipo de conexión a usar al conectarse al servidor MySQL. El modo de realizar la conexión a la base de datos de MySQL está determinado por el parámetro `host`.

`flags`

  Con el parámetro `flags` se pueden establecer diferentes opciones de conexión:

  Banderas soportadas
  Nobre | Descripción
  --- | ---
  `MYSQLI_CLIENT_COMPRESS` | Usar el protocolo de compresión
  `MYSQLI_CLIENT_FOUND_ROWS` | Devolver el número de filas coincidentes, no el número de filas afectadas
  `MYSQLI_CLIENT_IGNORE_SPACE` | Permitir espacios después de los nombres de funciones. Hace que todos los nombres de funciones sean palabras reservadas.
  `MYSQLI_CLIENT_INTERACTIVE` | Permite `interactive_timeout` segundos (en vez de `wait_timeout` segundos) de inactividad antes de cerrar la conexión
  `MYSQLI_CLIENT_SSL` | Usar SSL (encriptación)
  `MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT` | Igual que `MYSQLI_CLIENT_SSL`, pero deshabilita la validación del certificado SSL proporcionado. Esto solamente es para instalaciones que usan el Controlador Nativo de MySQL y MySQL 5.6 o superior.

  > Nota:

  > Por razones de seguridad la bandera `MULTI_STATEMENT` no está soportada en PHP. Si quiere ejecutar múltiples consultas use la función mysqli_multi_query().

### Historial de cambios

Versión | Descripción
--- | ---
5.6.16 | Se añadió la bandera `MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT` para el Controlador Nativo de MySQL

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Ejemplos

Ejemplo #1 Ejemplo de mysqli::real_connect()

Estilo orientado a objetos

`<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('Falló mysqli_init');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Falló la configuración de MYSQLI_INIT_COMMAND');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Falló la configuración de MYSQLI_OPT_CONNECT_TIMEOUT');
}
if (!$mysqli->real_connect('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd')) {
die('Error de conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Éxito... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>`

Estilo orientado a objetos al extender la clase mysqli

`<?php
class foo_mysqli extends mysqli {
public function __construct($host, $usuario, $contraseña, $bd) {
parent::init();
if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Falló la configuración de MYSQLI_INIT_COMMAND');
}
if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Falló la configuración de MYSQLI_OPT_CONNECT_TIMEOUT');
}
if (!parent::real_connect($host, $usuario, $contraseña, $bd)) {
die('Error de conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}
$bd = new foo_mysqli('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd');
echo 'Éxito... ' . $bd->host_info . "\n";
$bd->close();
?>`

Estilo por procedimientos

`<?php
$enlace = mysqli_init();
if (!$enlace) {
die('Falló mysqli_init');
}
if (!mysqli_options($enlace, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Falló la configuración de MYSQLI_INIT_COMMAND');
}
if (!mysqli_options($enlace, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Falló la configuración de MYSQLI_OPT_CONNECT_TIMEOUT');
}
if (!mysqli_real_connect($enlace, 'localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd')) {
die('Error de conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Éxito... ' . mysqli_get_host_info($enlace) . "\n";
mysqli_close($enlace);
?>`

El resultado de los ejemplos sería:

    Éxito... MySQL host info: localhost via TCP/IP

### Notas

> 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().

### Ver también

- mysqli_connect() - Alias de mysqli::__construct
- mysqli_init() - Inicializa y devuelve un recurso para utilizarlo con mysqli_real_connect()
- mysqli_options() - Establecer opciones
- mysqli_ssl_set() - Usada para establece conexiones seguras usando SSL
- mysqli_close() - Cierra una conexión previamente abierta a una base de datos