php8.5
Home/ Manual/ mysqli / mysqli/ mysqli::real_connect

mysqli::real_connect

PHP function Edit on GitHub ✎

(PHP 5, PHP 7, PHP 8)

Opens a connection to the MySQL server

Description

Oop

mysqli::real_connect(string|null $hostname = null, string|null $username = null, string|null $password = null, string|null $database = null, int|null $port = null, string|null $socket = null, int $flags = 0): bool

Procedural

mysqli_real_connect(mysqli $mysql, string|null $hostname = null, string|null $username = null, string|null $password = null, string|null $database = null, int|null $port = null, string|null $socket = null, int $flags = 0): bool

Opens a connection to the MySQL database server with optional connection options.

This function differs from mysqli_connect():

Parameters

hostname

Can be either a host name or an IP address. When passing null, the value is retrieved from mysqli.default_host. When possible, pipes will be used instead of the TCP/IP protocol. The TCP/IP protocol is used if a host name and port number are provided together e.g. localhost:3308.

username

The MySQL username or null to assume the username based on the mysqli.default_user ini option.

password

The MySQL password or null to assume the password based on the mysqli.default_pw ini option.

database

The default database to be used when performing queries or null.

port

The port number to attempt to connect to the MySQL server or null to assume the port based on the mysqli.default_port ini option.

socket

The socket or named pipe that should be used or null to assume the socket based on the mysqli.default_socket ini option.

Note

Specifying the socket parameter will not explicitly determine the type of connection to be used when connecting to the MySQL server. How the connection is made to the MySQL database is determined by the hostname parameter.

flags

With the parameter flags you can set different connection options:

NameDescription
MYSQLI_CLIENT_COMPRESSUse compression protocol
MYSQLI_CLIENT_FOUND_ROWSReturn the number of matched rows, not the number of affected rows
MYSQLI_CLIENT_IGNORE_SPACEAllow spaces after function names. Makes all function names reserved words.
MYSQLI_CLIENT_INTERACTIVEAllow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection
MYSQLI_CLIENT_SSLUse SSL (encryption)
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERTLike MYSQLI_CLIENT_SSL, but disables validation of the provided SSL certificate. This is only for installations using MySQL Native Driver and MySQL 5.6 or later.
Note

For security reasons the MULTI_STATEMENT flag is not supported in PHP. If you want to execute multiple queries use the mysqli_multi_query() function.

Return Values

Success

Errors/Exceptions Conditionalexception

Changelog

VersionDescription
7.4.0All parameters are now nullable.

Examples

mysqli::real_connect example

Oop

php
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_init();

$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);

$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db', null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);

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

Oop when extending mysqli class

php
<?php

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

        parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
        parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);

        parent::real_connect($host, $user, $pass, $db, null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);
    }
}

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

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

Procedural

php
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_init();

mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5);

mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db', null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);

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

Outputs

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

Notes Note

See Also

Source: reference/mysqli/mysqli/real-connect.xml · from the official PHP manual (php/doc-en)