mysqli::real_connect
mysqli_real_connect
(PHP 5, PHP 7)
mysqli::real_connect -- mysqli_real_connect — Устанавливает соединение с сервером mysql
Описание
Объектно-ориентированный стиль
$host
= ?
, string $username
= ?
, string $passwd
= ?
, string $dbname
= ?
, int $port
= ?
, string $socket
= ?
, int $flags
= ?
) : boolПроцедурный стиль
$link
, string $host
= ?
, string $username
= ?
, string $passwd
= ?
, string $dbname
= ?
, int $port
= ?
, string $socket
= ?
, int $flags
= ?
) : boolУстанавливает соединение с СУБД 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
-
Порт, к которому будет производиться подключение.
-
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 (шифрование) MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT
Аналогично MYSQLI_CLIENT_SSL
, но запрещает проверку SSL сертификата. Работает только с MySQL Native Driver и MySQL 5.6 и выше.Замечание:
По причинам безопасности, флаг
MULTI_STATEMENT
не поддерживается в PHP. Если необходимо выполнять мультизапросы, используйте функцию mysqli_multi_query().
Список изменений
Версия | Описание |
---|---|
5.6.16 |
Добавлен флаг MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT для MySQL Native Driver
|
Возвращаемые значения
Возвращает 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_TIMEOUT, 5)) {
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_TIMEOUT, 5)) {
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($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Установка MYSQLI_INIT_COMMAND завершилась провалом');
}
if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
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() - Закрывает ранее открытое соединение с базой данных