PHP 8.3.4 Released!

mysqli::real_connect

mysqli_real_connect

(PHP 5, PHP 7, PHP 8)

mysqli::real_connect -- mysqli_real_connectAbre 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

add a note

User Contributed Notes 2 notes

up
-7
Pom
14 years ago
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.
up
-18
php-nospam325123 at brainpower dot no-ip dot org
13 years ago
this is because it tries to use sockets with the string localhost this is documented en known
To Top