(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
.
link
Só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
socket
no 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_STATEMENT
no 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().