mysqli::__construct
mysqli::connect
mysqli_connect
(PHP 5, PHP 7)
mysqli::__construct -- mysqli::connect -- mysqli_connect — Устанавливает новое соединение с сервером MySQL
Описание
Объектно-ориентированный стиль
$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")
)$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")
) : voidПроцедурный стиль
$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")
) : mysqli|falseУстанавливает соединение с работающим сервером MySQL.
Список параметров
-
host
-
Может быть именем хоста или IP-адресом. Передача
null
или строки "localhost" этому параметру означает, что в качестве хоста будет использоваться локальная машина, на которой запущен скрипт. Если есть такая возможность, будут использоваться пайпы вместо протокола TCP/IP.Если перед именем хоста задать строку
p:
, то будет открыто постоянное соединение. Если соединение открыто из пула подключений, будет автоматически вызвана функция mysqli_change_user(). -
username
-
Имя пользователя MySQL.
-
passwd
-
Если не задан или равен
null
, MySQL-сервер в первую очередь попытается аутентифицировать пользователя в принципе имеющего пароль, а затем будет искать среди пользователей, у которых нет пароля. Такой подход позволяет одному пользователю назначать различные права (в зависимости от того, задан пароль или нет). -
dbname
-
Если параметр задан, его значение будет использоваться в качестве имени базы данных по умолчанию при выполнении запросов.
-
port
-
Задает номер порта для подключения к серверу MySQL.
-
socket
-
Задает сокет или именованный пайп, который необходимо использовать.
Замечание:
Передача параметра
socket
не будет явно задавать тип соединения при подключении к серверу MySQL. То, как будет устанавливаться соединение с MySQL-сервером, определяется параметромhost
.
Возвращаемые значения
Возвращает объект, представляющий подключение к серверу MySQL, или false
в случае возникновения ошибки.
Примеры
Пример #1 Пример использования mysqli::__construct()
Объектно-ориентированный стиль
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
/*
* Это "официальный" объектно-ориентированный способ сделать это
* однако $connect_error не работал вплоть до версий PHP 5.2.9 и 5.3.0.
*/
if ($mysqli->connect_error) {
die('Ошибка подключения (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
/*
* Если нужно быть уверенным в совместимости с версиями до 5.2.9,
* лучше использовать такой код
*/
if (mysqli_connect_error()) {
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::__construct($host, $user, $pass, $db);
if (mysqli_connect_error()) {
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_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$link) {
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_error() или с помощью свойства mysqli->connect_error, как показано в примерах.
Замечание:
Если необходимо задать дополнительные параметры подключения, вроде тайм-аута и т.п., то вместо этого метода необходимо использовать функцию mysqli_real_connect().
Замечание:
Вызов конструктора без параметров идентичен вызову функции mysqli_init().
Замечание:
Ошибка "Can't create TCP/IP socket (10106)" обычно означает, что директива конфигурации variables_order не содержит символ
E
. В Windows системах, если окружение не скопировано, переменная средыSYSTEMROOT
будет недоступна, и у PHP возникнут проблемы с загрузкой Winsock.
Смотрите также
- mysqli_real_connect() - Устанавливает соединение с сервером mysql
- mysqli_options() - Установка настроек
- mysqli_connect_errno() - Возвращает код ошибки последней попытки соединения
- mysqli_connect_error() - Возвращает описание последней ошибки подключения
- mysqli_close() - Закрывает ранее открытое соединение с базой данных