mysqli::real_connect

mysqli_real_connect

(PHP 5)

mysqli::real_connect -- mysqli_real_connect Устанавливает соединение с сервером mysql

Описание

Объектно-ориентированный стиль

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

Процедурный стиль

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

Устанавливает соединение с СУБД MySQL.

Эта функция отличается от mysqli_connect():

  • Для работы mysqli_real_connect() необходим действительный объект, созданный функцией mysqli_init().

  • С помощью функции mysqli_options() можно задать различные настройки подключения.

  • Параметр flags.

Список параметров

link

Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()

host

Может быть именем хоста или IP адресом. Передача NULL или строки "localhost" этому параметру означает, что в качестве хоста будет использоваться локальная машина, на которой запущен скрипт. Если есть такая возможность, будут использоваться пайпы вместо протокола TCP/IP.

username

Имя пользователя MySQL.

passwd

Если не задан или равен NULL, MySQL сервер в первую очередь попытается аутентифицировать пользователя в принципе имеющего пароль, а затем будет искать среди пользователей, у которых нет пароля. Такой подход позволяет одному пользователю назначать различные права (в зависимости от того, задан пароль или нет).

dbname

Если параметр задан, его значение будет использоваться в качестве имени базы данных по умолчанию при выполнении запросов.

port

Specifies the port number to attempt to connect to the MySQL server.

socket

Задает номер порта для подключения к серверу MySQL.

Замечание:

Передача параметра socket не будет явно задавать тип соединения при подключении к серверу MySQL. То, как будет устанавливаться соединение с MySQL сервером, определяется параметром host.

flags

С помощью параметра flags можно задать некоторые настройки соединения:

Поддерживаемые флаги
Имя Описание
MYSQLI_CLIENT_COMPRESS Использовать протокол сжатия
MYSQLI_CLIENT_FOUND_ROWS возвращать количество строк, подошедших условиям выборки, вместо количества затронутых запросом строк
MYSQLI_CLIENT_IGNORE_SPACE Допускать пробелы после имен функций. Делает все имена функций зарезервированными словами.
MYSQLI_CLIENT_INTERACTIVE Допускать interactive_timeout секунд (вместо wait_timeout) простоя, прежде чем закрыть соединение
MYSQLI_CLIENT_SSL Использовать SSL (шифрование)

Замечание:

По причинам безопасности флаг MULTI_STATEMENT не поддерживается в PHP. Если необходимо выполнять мультизапросы, используйте функцию mysqli_multi_query().

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования mysqli::real_connect()

Объектно-ориентированный стиль

<?php

$mysqli 
mysqli_init();
if (!
$mysqli) {
    die(
'mysqli_init завершилась провалом');
}

if (!
$mysqli->options(MYSQLI_INIT_COMMAND'SET AUTOCOMMIT = 0')) {
    die(
'Установка MYSQLI_INIT_COMMAND завершилась провалом');
}

if (!
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT5)) {
    die(
'Установка MYSQLI_OPT_CONNECT_TIMEOUT завершилась провалом');
}

if (!
$mysqli->real_connect('localhost''my_user''my_password''my_db')) {
    die(
'Ошибка подключения (' mysqli_connect_errno() . ') '
            
mysqli_connect_error());
}

echo 
'Выполнено... ' $mysqli->host_info "\n";

$mysqli->close();
?>

Объектно-ориентированный стиль при расширении класса mysqli

<?php

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

        if (!
parent::options(MYSQLI_INIT_COMMAND'SET AUTOCOMMIT = 0')) {
            die(
'Установка MYSQLI_INIT_COMMAND завершилась провалом');
        }

        if (!
parent::options(MYSQLI_OPT_CONNECT_TIMEOUT5)) {
            die(
'Установка MYSQLI_OPT_CONNECT_TIMEOUT завершилась провалом');
        }

        if (!
parent::real_connect($host$user$pass$db)) {
            die(
'Ошибка подключения (' mysqli_connect_errno() . ') '
                    
mysqli_connect_error());
        }
    }
}

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

echo 
'Выполнено... ' $db->host_info "\n";

$db->close();
?>

Процедурный стиль

<?php

$link 
mysqli_init();
if (!
$link) {
    die(
'mysqli_init завершилась провалом');
}

if (!
mysqli_options($linkMYSQLI_INIT_COMMAND'SET AUTOCOMMIT = 0')) {
    die(
'Установка MYSQLI_INIT_COMMAND завершилась провалом');
}

if (!
mysqli_options($linkMYSQLI_OPT_CONNECT_TIMEOUT5)) {
    die(
'Установка MYSQLI_OPT_CONNECT_TIMEOUT завершилась провалом');
}

if (!
mysqli_real_connect($link'localhost''my_user''my_password''my_db')) {
    die(
'Ошибка подключения (' mysqli_connect_errno() . ') '
            
mysqli_connect_error());
}

echo 
'Выполнено... ' mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>

Результат выполнения данных примеров:

Выполнено... MySQL host info: localhost via TCP/IP

Примечания

Замечание:

MySQLnd всегда подразумевает кодировку, которую использует по умолчанию сервер. Эта кодировка передается во время установки соединения/авторизации, которе использует mysqlnd.

Libmysqlclient по умолчанию использует кодировку, установленную в my.cnf или специальным вызовом mysqli_options() до использования mysqli_real_connect(), но после mysqli_init().

Смотрите также

  • mysqli_connect() - Псевдоним mysqli::__construct
  • mysqli_init() - Инициализирует MySQLi и возвращает ресурс для использования в функции mysqli_real_connect()
  • mysqli_options() - Задание настроек
  • mysqli_ssl_set() - Используется для установления безопасных соединений, используя SSL
  • mysqli_close() - Закрывает ранее открытое соединение с базой данных

Коментарии

Автор:
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.
2009-12-01 05:47:53
http://php5.kiev.ua/manual/ru/mysqli.real-connect.html
this is because it tries to use sockets with the string localhost this is documented en known
2010-12-03 05:29:58
http://php5.kiev.ua/manual/ru/mysqli.real-connect.html

    Поддержать сайт на родительском проекте КГБ