mysql_connect

Open a connection to a MySQL Server

&mysql.alternative.note;

- `mysqli_connect`
- `PDO::__construct`

&reftitle.description; ``resource``false```mysql_connect` `string` `server` ini_get("mysql.default_host") `string` `username` ini_get("mysql.default_user") `string` `password` ini_get("mysql.default_password") `bool` `new_link`&false; `int` `client_flags` 0

Opens or reuses a connection to a MySQL server.

&reftitle.parameters;

`server`

- The MySQL server. It can also include a port number. e.g. "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for the localhost.

  If the PHP directive mysql.default_host is undefined (default), then the default value is 'localhost:3306'. In &sqlsafemode;, this parameter is ignored and value 'localhost:3306' is always used.

`username`

- The username. Default value is defined by mysql.default_user. In &sqlsafemode;, this parameter is ignored and the name of the user that owns the server process is used.

`password`

- The password. Default value is defined by mysql.default_password. In &sqlsafemode;, this parameter is ignored and empty password is used.

`new_link`

- If a second call is made to `mysql_connect` with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The `new_link` parameter modifies this behavior and makes `mysql_connect` always open a new link, even if `mysql_connect` was called before with the same parameters. In &sqlsafemode;, this parameter is ignored.

`client_flags`

- The `client_flags` parameter can be a combination of the following constants: 128 (enable `LOAD DATA LOCAL` handling), `MYSQL_CLIENT_SSL`, `MYSQL_CLIENT_COMPRESS`, `MYSQL_CLIENT_IGNORE_SPACE` or `MYSQL_CLIENT_INTERACTIVE`. Read the section about mysql.client-flags for further information. In &sqlsafemode;, this parameter is ignored.

&reftitle.returnvalues;

Returns a MySQL link identifier on success&return.falseforfailure;.

&reftitle.examples;

### `mysql_connect` example

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    ?>

### `mysql_connect` example using `hostname:port` syntax

    <?php
    // we connect to example.com and port 3307
    $link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);

    // we connect to localhost at port 3307
    $link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    ?>

### `mysql_connect` example using ":/path/to/socket" syntax

    <?php
    // we connect to localhost and socket e.g. /tmp/mysql.sock

    // variant 1: omit localhost
    $link = mysql_connect(':/tmp/mysql', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);

    // variant 2: with localhost
    $link = mysql_connect('localhost:/tmp/mysql.sock', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    ?>

&reftitle.notes;

Whenever you specify "localhost" or "localhost:port" as server, the MySQL client library will override this and try to connect to a local socket (named pipe on Windows). If you want to use TCP/IP, use "127.0.0.1" instead of "localhost". If the MySQL client library tries to connect to the wrong local socket, the correct path should be set as mysql.default_host in &php.ini; and the server field left blank.

The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling `mysql_close`.

Error "Can't create TCP/IP socket (10106)" usually means that the variables_order configure directive doesn't contain character `E`. On Windows, if the environment is not copied the `SYSTEMROOT` environment variable won't be available and PHP will have problems loading Winsock.

&reftitle.seealso;

- `mysql_pconnect`
- `mysql_close`