PHP.mk документација

mysqli::__construct

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

mysqli.construct.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека mysqli.construct.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
mysqli::__construct

Референца за `mysqli.construct.php` со подобрена типографија и навигација.

mysqli.construct.php

mysqli::__construct

mysqli::connect

mysqli_connect

класата mysqli_driver

mysqli::__construct -- mysqli::connect -- mysqli_connectОтвори нова врска со MySQL серверот

= NULL

Напиши целосна ознака на елемент

public mysqli::__construct(
         ?string $hostname = null,
         ?string $username = null,
         Иницијализира контекст за инкрементално хеширање ?string $password = null,
         ?string $database = null,
         ?int $port = null,
         ?string $socket = null
)
public mysqli::connect(
         ?string $hostname = null,
         ?string $username = null,
         Иницијализира контекст за инкрементално хеширање ?string $password = null,
         ?string $database = null,
         ?int $port = null,
         ?string $socket = null
): bool

Процедурален стил

mysqli_connect(
         ?string $hostname = null,
         ?string $username = null,
         Иницијализира контекст за инкрементално хеширање ?string $password = null,
         ?string $database = null,
         ?int $port = null,
         ?string $socket = null
): mysqli|false

Отвара врска со MySQL Серверот.

Параметри

hostname

Може да биде име на хост или IP адреса. При поминување null, вредноста се зема од mysqli.default_host. Кога е можно, ќе се користат цевки наместо TCP/IP протокол. TCP/IP протоколот се користи ако се дадени име на хост и број на порта заедно, на пр. localhost:3308.

Претставување на хостот со p: отвара постојана врска. mysqli_change_user() автоматски се повикува на врски отворени од базенот за врски.

username

MySQL корисничкото име или null за претпоставување на корисничкото име врз основа на mysqli.default_user ini опцијата.

password

MySQL лозинката или null за претпоставување на лозинката врз основа на mysqli.default_pw ini опцијата.

database

Стандардната база на податоци што ќе се користи при извршување на прашања или null.

port

Бројот на портата за обид за поврзување со MySQL серверот или null за претпоставување на портата врз основа на mysqli.default_port ini опцијата.

socket

Приклучокот или именуваната цевка што треба да се користи или null за претпоставување на приклучокот врз основа на mysqli.default_socket ini опцијата.

Забелешка:

Наведувањето на socket параметарот нема експлицитно да го одреди типот на врска што ќе се користи при поврзување со MySQL серверот. Како се прави врската со MySQL базата на податоци се одредува според hostname parameter.

Вратени вредности

API не вклучува емулација за емулација на подготвени изјави од страна на клиентот. секогаш враќа објект што ја претставува врската со MySQL сервер, без оглед дали е успешна или не.

mysqli_connect() враќа објект што ја претставува врската со MySQL сервер, или false при неуспех.

веќе нема никакво влијание. returns true на успех или false при неуспех. Пред PHP 8.1.0, враќа null на успешен исход.

Errors/Exceptions

Ако е овозможено известување за грешки на mysqli (MYSQLI_REPORT_ERROR) и бараната операција не успее, се генерира предупредување. Ако, дополнително, режимот е поставен на MYSQLI_REPORT_STRICT, а mysqli_sql_exception наместо тоа се фрла.

Дневник на промени

Верзија = NULL
8.1.0 веќе нема никакво влијание. сега враќа true наместо null на успешен исход.
7.4.0 defaultLocale сега е nullable.

Примери

Пример #1 API не вклучува емулација за емулација на подготвени изјави од страна на клиентот. example

Напиши целосна ознака на елемент

<?php

/* You should enable error reporting for mysqli before attempting to make a connection */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

/* Set the desired charset after establishing a connection */
$mysqli->set_charset('utf8mb4');

printf("Success... %s\n", $mysqli->host_info);

Процедурален стил

<?php

/* You should enable error reporting for mysqli before attempting to make a connection */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

/* Set the desired charset after establishing a connection */
mysqli_set_charset($mysqli, 'utf8mb4');

printf("Success... %s\n", mysqli_get_host_info($mysqli));

mysqli_result::fetch_object()

Success... localhost via TCP/IP

Пример #2 Продолжување на класата mysqli

<?php

class FooMysqli extends mysqli {
public function
__construct($host, $user, $pass, $db, $port, $socket, $charset) {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
parent::__construct($host, $user, $pass, $db, $port, $socket);
$this->set_charset($charset);
}
}

$db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');

Пример #3 Рачно ракување со грешки

Ако пријавувањето грешки е оневозможено, програмерот е одговорен за проверка и ракување со неуспесите

Напиши целосна ознака на елемент

<?php

error_reporting
(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if (
$mysqli->connect_errno) {
throw new
RuntimeException('mysqli connection error: ' . $mysqli->connect_error);
}

/* Set the desired charset after establishing a connection */
$mysqli->set_charset('utf8mb4');
if (
$mysqli->errno) {
throw new
RuntimeException('mysqli error: ' . $mysqli->error);
}

Процедурален стил

<?php

error_reporting
(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (
mysqli_connect_errno()) {
throw new
RuntimeException('mysqli connection error: ' . mysqli_connect_error());
}

/* Set the desired charset after establishing a connection */
mysqli_set_charset($mysqli, 'utf8mb4');
if (
mysqli_errno($mysqli)) {
throw new
RuntimeException('mysqli error: ' . mysqli_error($mysqli));
}

Белешки

Забелешка:

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 директивата configure не содржи карактер E. На Windows, ако околината не се копира SYSTEMROOT променливата на околината нема да биде достапна и PHP ќе има проблеми со вчитувањето на Winsock.

Види Исто така

Белешки од корисници 5 белешки

- Затвора претходно отворена врска со базата на податоци
пред 11 години
Note that on all >=Windows 7 Servers, a host name "localhost" will create a very expensive lookup (~1 Second). 

That's because since Windows 7, the hosts file doesn't come with a preconfigured
127.0.0.1 localhost
anymore

So, if you notice a long connection creation, try "127.0.0.1" instead.
andres na 21brains dot com
пред 11 години
Please do use set_charset("utf8") after establishing the connection if you want to avoid weird string issues. I do not know why the documentation does not warn you about this kind of stuff.

We had a hard time figuring out what was going on since we were using mb_detect_encoding and it said everything was UTF-8, but of course the display was wrong. If we used iconv from ISO-8859-1 to UTF-8 the strings looked fine, even though everything in the database had the right collation. So in the end, it was the connection that was the filter and although the notes for this function mention default charsets, it almost reads as a sidenote instead of a central issue when dealing with UTF and PHP/MySQL.
chris на ocproducts dot com
пред 8 години
There's a separate port parameter, unlike mysql_connect. However, using host:port on the host parameter does actually work.

There is a caveat. If the host is 'localhost' then the port is ignored, whether you use a port parameter or the implicit syntax I mentioned above. This is because 'localhost' will make it use unix sockets rather than TCP/IP.
php na haravikk dot me
пред 8 години
Just wanted to add a note for anyone looking to use the MySQLi persistent connections feature; it's important to note that PHP opens and retains one connection per database user per process.

What this means is that if you are hosting multiple applications, each with its own database user (as is good practice) then you will end up multiplying the number of connections that PHP may hold open.

For example, if you have PHP configured with a maximum of eight worker processes, and you regularly use four different database users, then your MySQL server will need to accept at LEAST a maximum of 32 connections, or else it will run out.

However, if you would like to minimise the number of connections, what you can do is instead is to open the connection using a "guest" user (with no privileges except logging in) and then use ->change_user() to switch to a more privileged user, before switching back to the guest when you're done. Since all of the connections would therefore belong to the guest user, PHP should only maintain one per worker process.
paul na mtnlist dot com
12 години пред
If you want to connect via an alternate port (other than 3306), as you might when using an ssh tunnel to another host, using "localhost" as the hostname will not work. 

Using 127.0.0.1 will work.  Apparently, if you specify the host as "localhost", the constructor ignores the port specified as an argument to the constructor.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.