Notice that when using "localhost" as hostname the port option might be ignored.
If you wish to connect thru a different port than default, substitute "127.0.0.1" for localhost.
(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Abre una conexión a un servidor mysql
Estilo orientado a objetos
$host
= ?,$username
= ?,$passwd
= ?,$dbname
= ?,$port
= ?,$socket
= ?,$flags
= ?Estilo por procedimientos
$link
,$host
= ?,$username
= ?,$passwd
= ?,$dbname
= ?,$port
= ?,$socket
= ?,$flags
= ?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
.
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á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_STATEMENT
no 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_CERT para 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().
Notice that when using "localhost" as hostname the port option might be ignored.
If you wish to connect thru a different port than default, substitute "127.0.0.1" for localhost.
this is because it tries to use sockets with the string localhost this is documented en known