PHP Unconference Europe 2015

mysqli::real_connect

mysqli_real_connect

(PHP 5)

mysqli::real_connect -- mysqli_real_connectAbre una conexión a un servidor mysql

Descripción

Estilo orientado a objetos

bool mysqli::real_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )

Estilo por procedimientos

bool mysqli_real_connect ( mysqli $link [, string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $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.

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)

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

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_TIMEOUT5)) {
    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_TIMEOUT5)) {
            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($enlaceMYSQLI_INIT_COMMAND'SET AUTOCOMMIT = 0')) {
    die(
'Falló la configuración de MYSQLI_INIT_COMMAND');
}

if (!
mysqli_options($enlaceMYSQLI_OPT_CONNECT_TIMEOUT5)) {
    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ían:

É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 add a note

User Contributed Notes 2 notes

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