БоСдинСния

Π‘Π΅Ρ€Π²Π΅Ρ€ MySQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. БоСдинСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ TCP/IP, сокСты Unix-Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΉΠΏΡ‹ Windows.

Имя хоста localhost ΠΈΠΌΠ΅Π΅Ρ‚ особоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Оно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сокСтах Unix Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ TCP/IP-соСдинСниС с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ хостом, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 127.0.0.1 вмСсто ΠΈΠΌΠ΅Π½ΠΈ хоста localhost.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ localhost

<?php

$mysqli
= new mysqli("localhost", "user", "password", "database");

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

$mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Localhost via UNIX socket
127.0.0.1 via TCP/IP

Умолчания для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² соСдинСний

Π’ зависимости ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ Π·Π°Π΄Π°Π½, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ попытаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΎ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ PHP.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 Π—Π°Π΄Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

mysqli.default_host=192.168.2.27
mysqli.default_user=root
mysqli.default_pw=""
mysqli.default_port=3306
mysqli.default_socket=/tmp/mysql.sock

Π”Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС, функция ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Если Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ пустыС ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ вмСсто Π½ΠΈΡ… свои встроСнныС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ВстроСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² соСдинСния

Если имя хоста Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° пустая строка, клиСнтская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Unix-сокСту хоста localhost. Если сокСт Π½Π΅ Π·Π°Π΄Π°Π½ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° пустая строка, ΠΈ ΠΏΡ€ΠΈ этом Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Unix-сокСту, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° попытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ сокСту /tmp/mysql.sock.

Π’ Windows-систСмах, Ссли Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ хоста пСрСдаётся ., Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° попытаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ соСдинСниС Π½Π° основС ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΉΠΏΠ°. Π’ этом случаС имя сокСта Π±ΡƒΠ΄Π΅Ρ‚ воспринято ΠΊΠ°ΠΊ имя ΠΏΠ°ΠΉΠΏΠ°. Если имя сокСта Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использовано Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ \\.\pipe\MySQL.

Если соСдинСниС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΈ сокСт Unix-Π΄ΠΎΠΌΠ΅Π½Π°, Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΉΠΏ Windows, ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π·Π°Π΄Π°Π½ ΠΏΠΎΡ€Ρ‚ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° 3306.

Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ mysqlnd ΠΈ клиСнтской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ MySQL (libmysqlclient) Π·Π°Π»ΠΎΠΆΠ΅Π½Π° Ρ‚Π° ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° опрСдСлСния ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠΉ.

Настройки соСдинСния

Настройки соСдинСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сразу послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ распоряТСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ символов. Настройки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Π΄ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру.

Когда трСбуСтся Π·Π°Π΄Π°Ρ‚ΡŒ настройки соСдинСния, опСрация ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ выполняСтся Π² Ρ‚Ρ€ΠΈ этапа: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ mysqli_init() ΠΈΠ»ΠΈ mysqli::__construct() создаётся дСскриптор ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ настраиваСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mysqli::options(), ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† устанавливаСтся сСтСвоС соСдинСниС с сСрвСром посрСдством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mysqli::real_connect().

ОбъСдинСниС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² ΠΏΡƒΠ»

ΠœΠΎΠ΄ΡƒΠ»ΡŒ mysqli ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ постоянныС соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· сСбя ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡ‹Ρ… соСдинСний. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ скриптом соСдинСниС закрываСтся Π»ΠΈΠ±ΠΎ самим скриптом Π² Ρ…ΠΎΠ΄Π΅ выполнСния, Π»ΠΈΠ±ΠΎ автоматичСски ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта. ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ соСдинСния ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡƒΠ» для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π² дальнСйшСм. Если трСбуСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ сСрвСру ΠΈ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ, сокСтом ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ, Ρ‚ΠΎ вмСсто создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ· ΠΏΡƒΠ»Π° извлСкаСтся ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° созданиС Π½ΠΎΠ²Ρ‹Ρ… соСдинСний.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ PHP-процСсс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свой ΠΏΡƒΠ» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ mysqli. Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвСра, PHP-процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько запросов. БоотвСтствСнно, соСдинСниС ΠΈΠ· ΠΏΡƒΠ»Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько скриптов.

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎΠ΅ соСдинСниС

НовоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ создаётся, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π² ΠΏΡƒΠ»Π΅ Π½Π΅ найдётся свободного ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ хоста, ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, пароля, сокСта, ΠΏΠΎΡ€Ρ‚Π° ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ постоянных соСдинСний ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ PHP Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ mysqli.allow_persistent. МаксимальноС количСство соСдинСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ скрипт, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ mysqli.max_links. МаксимальноС количСство соСдинСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ PHP-процСсс, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ mysqli.max_persistent. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Π±-сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ мноТСство PHP процСссов.

Π“Π»Π°Π²Π½Ρ‹ΠΉ нСдостаток постоянных ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ использованиСм ΠΈΡ… состояниС Π½Π΅ сбрасываСтся ΠΊ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ. НапримСр, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΈ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ. Π’Π°ΠΊΠΆΠ΅, Ссли Π²ΠΎ врСмя нахоТдСния соСдинСния Π² ΠΏΡƒΠ»Π΅ для процСсса измСнились ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ доступа, этот Ρ„Π°ΠΊΡ‚ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ отразится Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ· ΠΏΡƒΠ»Π°. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. Π₯отя, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ постоянный ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€Π°Π²Π΄Π° останСтся Π² Ρ‚ΠΎΠΌ состоянии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² ΠΏΡƒΠ».

ΠœΠΎΠ΄ΡƒΠ»ΡŒ mysqli ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° постоянноС соСдинСниС: состояниС соСдинСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ· ΠΏΡƒΠ»Π°, соСдинСниС сбрасываСтся. mysqli Π΄Π΅Π»Π°Π΅Ρ‚ это нСявным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mysqli::change_user() ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ выглядит, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданноС.

Однако, Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mysqli::change_user() довольно дорогостоящая опСрация. Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ быстродСйствия ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с установлСнным Ρ„Π»Π°Π³ΠΎΠΌ MYSQLI_NO_CHANGE_USER_ON_PCONNECT.

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ бСзопасным ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ быстродСйствиСм остаётся Π·Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π—Π΄Π΅ΡΡŒ нСльзя Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ совСта. Для простоты использования, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ бСзопасный Ρ€Π΅ΠΆΠΈΠΌ с очисткой соСдинСний.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 2 notes

up
0
sdfjsdfjsd at gmail dot com ΒΆ
17 days ago
<?php
// Database credentials
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// 1. Create database connection
$conn = new mysqli($servername, $username, $password, $dbname);

// 2. Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully.<br><br>";

// Recommendation: Set character set to UTF-8 (for proper special character rendering)
$conn->set_charset("utf8mb4");

// ==========================================
// EXAMPLE 1: Inserting data into the database (INSERT)
// ==========================================
// Assuming you have a 'users' table with 'first_name', 'last_name', and 'email' columns
$sql_insert = "INSERT INTO users (first_name, last_name, email) 
               VALUES ('John', 'Doe', 'john.doe@example.com')";

if ($conn->query($sql_insert) === TRUE) {
    // Get the ID of the last inserted row
    $last_id = $conn->insert_id;
    echo "βœ… New record created successfully. The ID of the new user is: " . $last_id . "<br><br>";
} else {
    echo "❌ Error inserting data: " . $conn->error . "<br><br>";
}

echo "<hr>";

// ==========================================
// EXAMPLE 2: Reading data from the database (SELECT)
// ==========================================
$sql_select = "SELECT id, first_name, last_name FROM users";
$result = $conn->query($sql_select);

// Check if the query returned any rows
if ($result->num_rows > 0) {
    echo "<strong>User List:</strong><br>";
    // Loop through the results row by row using a while loop
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " | Name: " . $row["first_name"] . " " . $row["last_name"] . "<br>";
    }
} else {
    echo "No records found in the database.";
}

// 3. Close the connection
// It is good practice to close the connection at the end of the script
$conn->close();
?>
up
0
gemik850 at gmail dot com ΒΆ
17 days ago
<?php
// Database credentials
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// 1. Create database connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 2. Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully.<br><br>";

// Recommendation: Set character set to UTF-8 (for proper special character rendering)
mysqli_set_charset($conn, "utf8mb4");

// ==========================================
// EXAMPLE 1: Inserting data into the database (INSERT)
// ==========================================
// Assuming you have a 'users' table with 'first_name', 'last_name', and 'email' columns
$sql_insert = "INSERT INTO users (first_name, last_name, email) 
               VALUES ('John', 'Doe', 'john.doe@example.com')";

if (mysqli_query($conn, $sql_insert)) {
    // Get the ID of the last inserted row
    $last_id = mysqli_insert_id($conn);
    echo "βœ… New record created successfully. The ID of the new user is: " . $last_id . "<br><br>";
} else {
    echo "❌ Error inserting data: " . mysqli_error($conn) . "<br><br>";
}

echo "<hr>";

// ==========================================
// EXAMPLE 2: Reading data from the database (SELECT)
// ==========================================
$sql_select = "SELECT id, first_name, last_name FROM users";
$result = mysqli_query($conn, $sql_select);

// Check if the query returned any rows
if (mysqli_num_rows($result) > 0) {
    echo "<strong>User List:</strong><br>";
    // Loop through the results row by row using a while loop
    while($row = mysqli_fetch_assoc($result)) {
        echo "ID: " . $row["id"] . " | Name: " . $row["first_name"] . " " . $row["last_name"] . "<br>";
    }
} else {
    echo "No records found in the database.";
}

// 3. Close the connection
// It is good practice to close the connection at the end of the script
mysqli_close($conn);
?>