downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mysqli::debug> <mysqli->connect_error
Last updated: Fri, 20 May 2011

view this page in

mysqli::__construct

mysqli_connect

(PHP 5)

mysqli::__construct -- mysqli_connectAbre una nueva conexión al servidor MySQL

Descripción

Estilo orientado a objetos

mysqli::__construct() ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

Estilo por procesos

mysqli mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

Abre una conexión al servidor MySQL que este funcionando.

Parámetros

host

Puede ser tanto un nombre de host o una dirección IP. Pasando el valor NULL o la cadena "localhost" a este parametro, se asume que será el host local. Cuando sea posible, se utilizaran tuberías en lugar del protocolo TCP/IP.

Anteponiendo al host con p: se abrirá una conexión persistente. mysqli_change_user() será llamada automáticamente en conexiones abiertas desde la agrupación de conexiones.

username

Nombre de usuario de MySQL.

passwd

Si no se facilita o es NULL, el servidor MySQL intentará autenticar el usuario contra el registro de usuarios sin contraseña. Esto permite que un usuario sea utilizado con diferentes permisos (según si la contraseña ha sido facilitada o no).

dbname

Si se facilita indicará base de datos por defecto que será usada cuando se realicen consultas.

port

Especifica el numero del puerto donde se intentará la conexión al servidor MySQL.

socket

Especifica el socket o la tubería nombrada para ser usada.

Note:

Especificando el parámetro socket no se determinará explícitamente el tipo de conexión que será usada cuando se conecte al servidor MySQL. Como se realiza la conexión a la base de datos MySQL está determinado por el parametro host.

Valores devueltos

Devuelve un objeto que representa la conexión a un servidor MySQL.

Historial de cambios

Versión Descripción
5.3.0 Añadida la capacidad de realizar conexiones persistentes.

Ejemplos

Example #1 mysqli::__construct() example

Estilo orientado a objetos

<?php
$mysqli 
= new mysqli('localhost''my_user''my_password''my_db');

/*
 * This is the "official" OO way to do it,
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
 */
if ($mysqli->connect_error) {
    die(
'Connect Error (' $mysqli->connect_errno ') '
            
$mysqli->connect_error);
}

/*
 * Use this instead of $connect_error if you need to ensure
 * compatibility with PHP versions prior to 5.2.9 and 5.3.0.
 */
if (mysqli_connect_error()) {
    die(
'Connect Error (' mysqli_connect_errno() . ') '
            
mysqli_connect_error());
}

echo 
'Success... ' $mysqli->host_info "\n";

$mysqli->close();
?>

Estilo orientado a objetos cuando se esté heredando de la clase mysqli

<?php

class foo_mysqli extends mysqli {
    public function 
__construct($host$user$pass$db) {
        
parent::__construct($host$user$pass$db);

        if (
mysqli_connect_error()) {
            die(
'Connect Error (' mysqli_connect_errno() . ') '
                    
mysqli_connect_error());
        }
    }
}

$db = new foo_mysqli('localhost''my_user''my_password''my_db');

echo 
'Success... ' $db->host_info "\n";

$db->close();
?>

Estilo por procesos

<?php
$link 
mysqli_connect('localhost''my_user''my_password''my_db');

if (!
$link) {
    die(
'Connect Error (' mysqli_connect_errno() . ') '
            
mysqli_connect_error());
}

echo 
'Success... ' mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>

El resultado de los ejemplos serían:

Success... MySQL host info: localhost via TCP/IP

Notas

Note:

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.

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

Note:

Solo para sintaxis orientada a objetos: Si una conexión falla se seguirá devolviendo un objeto. Para comprobar si la conexión ha fallado utiliza la función mysqli_connect_error() o la propiedad mysqli->connect_error como en los ejemplos anteriores.

Note:

Si es necesario configurar opciones, como el tiempo de espera, en su lugar puede utilizar la función mysqli_real_connect().

Note:

Llamar al constructor sin ningún parámetro es equivalente a llamar a la función mysqli_init().

Note:

Error "Can't create TCP/IP socket (10106)" / "no se puede crear un socket TCP/IP (10106)" suele significar que la directiva de configuración variables_order no contiene el caracter E. En Windows si no esta copiada la variable de entorno SYSTEMROOT PHP tendrá problemas para ejecutar Winshock.

Ver también



mysqli::debug> <mysqli->connect_error
Last updated: Fri, 20 May 2011
 
add a note add a note User Contributed Notes mysqli::__construct
boukeversteegh at gmail dot com 18-Apr-2011 01:19
(php 5.3.3)

If $port is a string, such as "3306", mysqli::query() will not work, even though mysqli_connect_errno() reports no error (value 0)!

<?php
$mysqli
= new mysqli("localhost", "user","password","database", "3306"); //port is a string!
$mysqli->query("SELECT 1;")->fetch_assoc();
// Fatal error: Call to a member function fetch_assoc() on a non-object
?>

This is particularly strange, since mysqli::query() should return a result object, or a boolean.

So, be careful when you read your port from a string or config file. Cast it to int first:
<?php
$port
= (int)$port;
?>
Anonymous 14-Sep-2009 12:37
If you get an error like
  Can't connect to MySQL server on 'localhost' (10061)
and you use named pipes/socket connections (or aren't sure how you installed the MySQL server) try the following connect command:

<?php
mysqli_connect
('.', $user_name, $password, $database_name, null, 'mysql');
?>

The '.' as hostname is absolutely necessary when using named pipes. 'localhost' won't work. 'mysql' is the standard name for the pipe/socket.
Slavyansk2.ru 26-Sep-2008 05:14
If you have error like "Trying to clone an uncloneable object of class..." when trying connect, add record

php_value zend.ze1_compatibility_mode 0

in your .htaccess file. This resolve connection problem.
chip1977 at mail dot ru 28-Jan-2008 12:52
To specify charset in my.cnf file you just have to add
skip-character-set-client-handshake directive after
[mysqld]
default-character-set=utf8

 
show source | credits | stats | sitemap | contact | advertising | mirror sites