(PHP 5, PHP 7)
mysqli::real_connect -- mysqli_real_connect — Abre una conexión a un servidor mysql
Estilo orientado a objetos
$host
   [, string $username
   [, string $passwd
   [, string $dbname
   [, int $port
   [, string $socket
   [, int $flags
  ]]]]]]] ) : boolEstilo por procedimientos
$link
   [, string $host
   [, string $username
   [, string $passwd
   [, string $dbname
   [, int $port
   [, string $socket
   [, int $flags
  ]]]]]]] ) : boolEstablece 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.
    
linkSó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.
      
usernameEl 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).
      
dbnameSi se proporciona, especificará la base de datos predeterminada a ser usada para realizar consultas.
portEspecifica el número de puerto con el que intentar conectarse al servidor MySQL.
socketEspecifica el socket o la tubería con nombre que debería usarse.
Nota:
Especificar el parámetro
socketno 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ámetrohost.
flags
       Con el parámetro flags se pueden establecer diferentes
       opciones de conexión:
      
| 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_STATEMENTno está soportada en PHP. Si quiere ejecutar múltiples consultas use la función mysqli_multi_query().
| Versión | Descripción | 
|---|---|
| 5.6.16 | Se añadió la bandera MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERTpara el Controlador Nativo de MySQL | 
   Devuelve TRUE en caso de éxito o FALSE en caso de error.
  
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
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().