HTML, Excel, Word, SEOÎñíîâû PHP ⇒ Ïîäêëþ÷åíèå

PHP äëÿ "÷àéíèêîâ"

Èíñòðóìåíòû
Âûáèðàåì IDE
Âûáèðàåì Web-ñåðâåð
Âûáèðàåì ÑÓÁÄ
Ñòðóêòóðà ÿçûêà PHP
Ïåðâûé øàã
Ñèíòàêñèñ
Òèïû äàííûõ
Ïåðåìåííûå è êîíñòàíòû
Îïåðàòîðû
Âûðàæåíèÿ
Óïðàâëÿþùèå ñòðóêòóðû
Ôóíêöèè
Êëàññû
Èñêëþ÷åíèÿ
Îøèáêè
Ìàññèâû
Ãëîáàëüíûå ìàññèâû
Cookies
Ñåññèè
Çàãðóçêà ôàéëîâ
Ðàáîòà ñ ôàéëàìè
Ðàáîòà ñ ôàéëàìè íà äèñêå
Ðàáîòà ñ äàííûìè â ôàéëå
Ïðèìåð óïðàâëåíèÿ ôàéëàìè
Ðàáîòà ñ áàçàìè äàííûõ
Ïîäêëþ÷åíèå
Àíàëèç ðåçóëüòàòîâ
Âûïîëíåíèå çàïðîñîâ
Îòêëþ÷åíèå
Ïðèìåð: îòñëåæèâàíèå ïîëüçîâàòåëåé
Ðàáîòà â ñåòè
Îòïðàâêà ïî÷òû
Áåçîïàñíîñòü
HTTP-àóòåíòèôèêàöèÿ
Çàùèòà ëîãèíîì è ïàðîëåì
Àâòîìàòèçàöèÿ
Ðåãóëÿðíûå âûðàæåíèÿ â PHP
Èíòåãðàöèÿ
PHP è JavaScript



Ïîäêëþ÷åíèå


Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷
ICQ: 438856621
email: _spin_@bk.ru

Ïåðâîå äåéñòâèå, êîòîðîå íàäî ñäåëàòü ïðè ðàáîòå ñ áàçîé äàííûõ - âûïîëíèòü ïîäêëþ÷åíèå. Äëÿ ýòîãî âàì ïîòðåáóåòñÿ çíàòü èìÿ ñåðâåðà, íàçâàíèå áàçû äàííûõ, èìÿ ïîëüçîâàòåëÿ è ïàðîëü.  íåêîòîðûõ ñëó÷àÿõ òðåáóåòñÿ åù¸ çíàòü ïîðò ñåðâåðà, ê êîòîðîìó ïîäêëþ÷åí MySQL.


Ïîäêëþ÷åíèå âûïîëíÿåòñÿ ïðè ïîìîùè ôóêöèé mysql_connect() èëè mysql_pconnect():

<?php
	$server = 'localhost';
	$user = 'root';
	$password = 'P@ssw0rd';
	
	$dblink = mysql_connect($server, $user, $password); 

	if($dblink)
		echo 'Îøèáêà ïîäêëþ÷åíèÿ ê ñåðâåðó áàç äàííûõ';
	else
		die('Îøèáêà ïîäêëþ÷åíèÿ ê ñåðâåðó áàç äàííûõ');

	// Òåïåðü â ïåðåìåííîé $dblink ñîäåðæèòñÿ 
	// ññûëêà íà âðåìåííîå ïîäêëþ÷åíèå ê áàçå äàííûõ
?>

Åñëè íåîáõîäèìî óêàçàòü ïîðò ïîäêëþ÷åíèÿ, òî åãî íàäî ïðîñòî äîïèñàòü ÷åðåç äâîåòî÷èå ê èìåíè ñåðâåðà:

<?php
	...
	$port = '12345';
	$server = 'localhost:' . $port;
	$dblink = mysql_connect($server, $user, $pass); 
	...
?>

Ñèíòàêñèñ ôóíêöèè mysql_pconnect() ïîëíîñòüþ àíàëîãè÷åí ñèíòàêñèñó mysql_connect():

<?php

	$dblink = mysql_pconnect($server, $user, $pass); 
	// Òåïåðü â ïåðåìåííîé $dblink ñîäåðæèòñÿ 
	// ññûëêà íà ïîñòîÿííîå ïîäêëþ÷åíèå ê áàçå äàííûõ

?>

Ôóíêöèÿ mysql_connect() îòêðûâàåò âðåìåííîå ñîåäèíåíèå, êîòîðîå çàêðûâàåòñÿ ëèáî ïðè âûçîâå ôóíêöèè mysql_close(), ëèáî àâòîìàòè÷åñêè ïðè çàâåðøåíèè ñêðèïòà.  ñâîþ î÷åðåäü, ôóíêöèÿ mysql_pconnect() ñîçäà¸ò ïîñòÿííîå ïîäêëþ÷åíèå, êîòîðîå îñòà¸òñÿ îòêðûòûì äàæå ïîñëå çàâåðøåíèÿ ñêðèïòà (áóêâà "p" â èìåíè îçíà÷àåò "Persistent", ò.å. "ïîñòîÿííûé"). Ïðè ïîâòîðíîì âûçîâå mysql_pconnect() èíòåðïðåòàòîð ñíà÷àëà ïûòàåòñÿ íàéòè è èñïîëüçîâàòü îòêðûòîå ðàíåå ïîäêëþ÷åíèå, è òîëüêî â ñëó÷àå íåóäà÷è îòêðûâàåò íîâîå.

Ñëåäóþùèé øàã - âûáîð áàçû äàííûõ ïðè ïîìîùè ôóíêöèè mysql_select_db(). Ýòà ôóíêöèÿ óêàçûâàåò ÑÓÁÄ, ÷òî âñå ïîñëåäóþùèå çàïðîñû íàäî âûïîëíÿòü ñ òàáëèöàìè óêàçàííîé áàçû äàííûõ:

<?php

	$database = 'myDatabase';
	$selected = mysql_select_db($database, $dblink); 
	if($selected)
		echo 'Ïîäêëþ÷åíèå ê áàçå äàííûõ ïðîøëî óñïåøíî';
	else
		die('Áàçà äàííûõ íå íàéäåíà èëè îòñóòñòâóåò äîñòóï');
?>

Çäåñü ìû èñïîëüçîâàëè ôóíêöèþ die() ñ åäèíñòâåííûì ïàðàìåòðîì - ñîîáùåíèåì îá îøèáêå. Âûçîâ die() ìîìåíòàëüíî ïðåðûâàåò âûïîëíåíèå ñêðèïòà è âûâîäèò óêàçàííîå ñîîáùåíèå â áðàóçåð ïîëüçîâàòåëÿ. Èñïîëüçîâàòü die() æåëàòåëüíî òîëüêî â àâàðèéíûõ ñëó÷àÿõ, êîãäà äàëüíåéøåå âûïîëíåíèå ñêðèïòà íå èìååò ñìûñëà. Íàïðèìåð, åñëè ïðè çàãðóçêå ôîðóìà îêàçûâàåòñÿ, ÷òî áàçà äàííûõ ñîîáùåíèé íåäîñòóïíà - äàëüíåéøàÿ çàãðóçêà òåðÿåò âñÿêèé ñìûñë.

Íà÷àëüíîå ïîäêëþ÷åíèå âûïîëíåíî, òåïåðü íàäî íàñòðîèòü ïàðàìåòðû ñîåäèíåíèÿ. Îñíîâíîé ïàðàìåòð, êîòîðûé æåëàòåëüíî óñòàíîâèòü ïðèíóäèòåëüíî - êîäîâàÿ ñòðàíèöà (charset). Êîäîâàÿ ñòðàíèöà - ýòî ïðàâèëî ñîïîñòàâëåíèÿ ñèìâîëîâ ðàçëè÷íûõ ÿçûêîâ. MySQL ïðè ðàáîòå ñ ñèìâîëàìè îïèðàåòñÿ íà ÷èñëîâûå êîäû ñèìâîëîâ, ò.å. ëþáàÿ ñòðîêà äëÿ ñåðâåðà - ýòî ïðîñòî ïîñëåäîâàòåëüíîñòü ÷èñåë. È èìåííî êîäîâàÿ ñòðàíèöà îïðåäåëÿåò, êàêîìó ñèìâîëó ñîîòâåòñòâóåò òî èëè èíîå ÷èñëî. Íàïðèìåð, ñèìâîë ñ êîäîì 196 - ýòî áóêâà "Ä" â ðóññêîé êîäèðîâêå, "Äåëüòà" â ãðå÷åñêîé è "Ä" â çàïàäíîåâðîïåéñêîé êîäèðîâêå.

Ïî-óìîë÷àíèþ, MySQL èñïîëüçóåò êîäèðîâêè "latin1" (çàïàäíîåâðîïåéñêàÿ) , ïîýòîìó ïðè ïîïûòêå çàïèñàòü íà ñåðâåð èëè ñ÷èòàòü ñ íåãî äàííûå â íàöèîíàëüíîé êîäèðîâêå (íàïðèìåð, ðóññêèé òåêñò) - ïðîèçîéä¸ò êîíôëèêò ñîïîñòàâëåíèé è âñå êîíôëèêòóþùèå ñèìâîëû áóäóò çàìåíåíû íà çíàêè âîïðîñà "?".

Óñòàíîâêà êîäîâîé ñòðàíèöû ïðîèçâîäèòñÿ ïðè ïîìîùè ôóíêöèè mysql_set_charset() èëè ïóò¸ì âûïîëíåíèÿ ñïåöèàëèçèðîâàííûõ çàïðîñîâ SET:

<?php
	
	if (!function_exists('mysql_set_charset')) {
		function   mysql_set_charset($charset, $dblink)
		{
			return mysql_query("set names   $charset",$dlink);
  		}
  	}
	
	$mycharset = "cp1251";
	mysql_set_charset($charset, $dblink)
	
?>

 ýòîì ñêðèïòå ïðîâåðÿåòñÿ íàëè÷èå ôóíêöèè mysql_set_charset(), è åñëè îíà íå íàéäåíà - îïðåäåëÿåòñÿ ôóíêöèÿ, âûïîëíÿþùàÿ àíàëîãè÷íîå äåñòâèå ïîñðåäñòâîì SQL-çàïðîñà.

Ïîñëå âûïîëíåíèÿ ýòîãî ñêðèïòà è ñåðâåð áàç äàííûõ è èíòåðïðåòàòîð PHP áóäóò ðàññìàòðèâàòü âñå ïåðåäàâàåìûå ñòðîêîâûå äàííûå êàê ñèìâîëû â êîäèðîâêå cp1251 (Windows-êèðèëè÷åñêàÿ) è êîíôëèêòîâ ñîïîñòàâëåíèÿ íå âîçíèêíåò. Åñëè æå íåîáõîäèìî îáåñïå÷èòü îäíîâðåìåííóþ ïîääåðæêó ñðàçó íåñêîëüêèõ ÿçûêîâ - âîñïîëüçóéòåñü êîäèðîâêîé utf8 (Þíèêîä).

Êàê ïðàâèëî, áàçû äàííûõ è èíòåðïðåòàòîð PHP ðàñïîëàãàþòñÿ íà ðàçíûõ ñåðâåðàõ è ñâÿçàíû ïî ñåòè. Ïîýòîìó íåëüçÿ ãàðàíòèðîâàòü, ÷òî ïîñòîÿííîå ñîåäèíåíèå, îòêðûòîå ïðè ïðåäûäóùåì çàïóñêå ñêðèïòà, áóäåò äîñòóïíî è ñåé÷àñ. Ñîåäèíåíèå ñ ñåðâåðîì ìîæåò áûòü óòåðÿíî ïî ðàçëè÷íûì ïðè÷èíàì: ñáîé ñåòè, îòêàç èëè ïåðåãðóçêà ñåðâåðà è ò.ï.

Äëÿ ïðîâåðêè ïîäêëþ÷åíèÿ ìîæíî âîñïîëüçîâàòüñÿ ôóíêöèåé mysql_ping(). Îíà âîçâðàùàåò true èëè false â çàâèñèìîñòè îò ñîñòîÿíèÿ ñîåäèíåíèÿ:

<?php
    if (!mysql_ping($dblink)) {
       echo 'Ñîåäèíåíèå ñ áàçîé äàííûõ ïîòåðÿíî';
       
		// çäåñü ìîæíî ïîïðîáîâàòü 
       // ïîâòîðíî ïîäêëþ÷èòüñÿ
    }
?>

Òàê æå ýòó ôóíêöèþ èìååò ñìûñë èñïîëüçîâàòü ïðè âûïîëíåíèè äëèòåëüíûõ îïåðàöèé, êîãäà ñîåäèíåíèå îòêðûâàåòñÿ è äëèòåëüíîå âðåìÿ îñòà¸òñÿ íåàêòèâíûì, ò.ê. ñåðâåð â öåëÿõ ýêîíîìèè ðåñóðñîâ ìîæåò ïðèíóäèòåëüíî îòêëþ÷èòü ïðîñòàèâàþùåå ïîäêëþ÷åíèå.

Èòàê, ìû ïîëó÷èëè äîñòóï ê áàçå äàííûõ è ãîòîâû ïîëó÷àòü è îáðàáàòûâàòü äàííûå.

 



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû