LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (36) - Připojujeme se k MySQL

Dnes nastane slavný den, kdy se v našem seriálu poprvé připojíme k MySQL databázi pomocí PHP.

11.8.2004 15:00 | Petr Zajíc | Články autora | přečteno 108232×

Komerční sdělení: Pořádáme Kurzy PHP

Připojení k MySQL

Pakliže jste četli minulé díly našeho seriálu, víte, že MySQL je systémová databáze a že tudíž běží jako serverový proces. Proto musí každý, kdo se chce k MySQL připojit, znát tyto přihlašovací informace:

Název hostitele
MySQL pochopitelně běží na nějakém stroji. Název hostitele se může zadávat jménem (třeba mysql.nekde.cz) nebo IP adresou. Pokud budete provozovat MySQL server doma, můžete většinou použít localhost či 127.0.0.1. Pokud se budete připojovat k MySQL u providera, název hostitele Vám sdělí.

Pozn.: Server, na němž běží databáze nemusí být nutně týž, na němž běží webový (http) server.

Port
MySQL naslouchá standardně na portu 3306, pokud není při konfiguraci určeno jinak. Pravděpodobně můžete port vynechat, 3306 je doplněno automaticky.

Název databáze
Zde by mohlo dojít k určitému matení pojmů: Na databázovém serveru MySQL existuje většinou několik vzájemně nesouvisejících databází. Každá databáze obsahuje žádnou nebo více tabulek a každá může mít vlastní nastavení práv. V praxi to většinou bývá tak, že součástí hostingových služeb je možnost používat jednu databázi. V ní můžete mít teoreticky nomezený počet tabulek a ostatní uživatelé serveru nemají k vaší databázi přístup. Vy zase nemáte přístup k jejich databázím.

Uživatelské jméno
Znalci prominou, ale je potřeba zdůraznit, že uživatelské jméno k databázovému serveru nijak nesouvisí s přihlašovacím jménem k serveru. Ve skutečnosti většinou nebudete mít na serveru, na němž databáze poběží, zřízen systémový účet. Uživatelské jméno nejspíš dostanete od správce databáze.

Heslo
Asi i heslo dostanete od správce databáze. Většinou bude splňovat základní bezpečnostní pravidla, tzn. bude dostatečně dlouhé a bude se skládat z písmen, číslic, případně dalších znaků.

V PHP se k MySQL databázi můžete připojit pomocí funkce myslq_connect. Jejími parametry jsou název hostitele, uživatelské jméno a heslo. Po připojení k MySQL si ještě musíte vybrat svoji databázi, což se děje příkazem mysql_select_db. Celé to může vypadat v nejjednodušším případě takto:

<?
mysql_connect
("localhost", "uzivatel", "heslo");
mysql_select_db("mojedb");
?>

Aniž bychom zabíhali do podrobností dodejme, že pokud to dopadne úspěšně, budou se od tohoto místa ve skriptu všechny příkazy určené pro MySQL provádět na tomto spojení. Pokud v témže skriptu zavoláte mysql_connect znovu se stejnými parametry, pokusí se PHP použít první spojení nemísto vytvoření nového (vytvoření nového spojení jde ale vynutit pomocí nepovinného čtvrtého parametru funkce mysql_connect). Spojení vytvořené pomocí mysql_connect je otevřené až do doby, než je zavolána funkce mysql_close, nebo do ukončení běhu skriptu.

Trvalá spojení

K příkazu mysql_connect existuje alternativní příkaz mysql_pconnect. Jediný rozdíl mezi nimi je ten, že mysql_pconnect se neuzavírá po ukončení běhu skriptu, ale zůstává otevřené. Mysql_pconnect lze použít pouze tehdy, když běží PHP jako modul Apache a jeho výzam spočívá vlastně jen v tom, že šetří čas, který mysql_connect spotřebovává při každém otevření spojení.

Pozn.: V typickém prostředí vícevláknových serverů je ale čas potřebný pro vykonání funkce mysql_connect zanedbatelný.

Profi přístup

Jelikož je připojení k databázi něco, co se bude v našich skriptech mnohokrát opakovat, měli bychom si ukázat nějaký pokročilejší příklad na připojování. Naše ukázka má totiž několik zásadních nevýhod:

  • nikomu se asi nebude chtít psát do každého skriptu údaje pro spojení
  • neošetřujeme chyby
  • typicky budeme mít vývojové prostředí doma a reálnou aplikaci "venku", takže se údaje pro spojení budou lišit

Všechno lze poměrně jednoduše řešit. Jak říkal můj učitel programování: "Udělej to jednou, udělej to pořádně a zapomeň na to". Především si údaje do spojení uložíme do konstant (můžete rovněž použít například asociativního pole), abychom při změně konfigurace nemuseli údaje přepisovat na mnoha místech. Za druhé, konstanty uložíme do samostatného souboru, který pak vložíme do našich skriptů pomocí direktivy include. A za třetí - pomocí proměnné prostředí zjistíme, kde náš kód běží a nastavíme hodnoty podle toho. Celý includovaný soubor pak může vypadat asi následovně:

<?
if ($_SERVER["SERVER_ADDR"]=="localhost")
{
  
define("SQL_HOST","localhost");
  
define("SQL_DBNAME","database");
  
define("SQL_USERNAME","user");
  
define("SQL_PASSWORD","password");
}
else
{
  
define("SQL_HOST","mysql.nekde.cz");
  
define("SQL_DBNAME","databaze_u_providera");
  
define("SQL_USERNAME","user2");
  
define("SQL_PASSWORD","password2");
}
?>

Pozn.: Je samozřejmě možné mít místo toho dva soubory začlenění, lokální a serverový. Většinou je ale dříve či později pomícháte nebo přepíšete, což se ve výše uvedeném případě nemůže stát.

A je tu čas vypořádat se s chybami - jak mysql_connect, tak i mysql_select_db mohou skončit chybou. Testovat to je naštěstí poměrně jednoduché, protože v případě úspěchu vracejí obě procedury FALSE.  Takže můžeme použít něco ve smyslu:

<?
include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se připojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error());    
?>

kde config.php je soubor s definicí konstant (viz výše). Jak jste nejspíš pochopili, vrací mysql_error chybovou hlášku z MySQL. Co se týče použití die, můžete zavzpomínat na jeden z předchozích dílů našeho seriálu, který rozebírá jeho úskalí. Pokud by to, že se nemůžete připojit k databázi nebylo pro skript fatální, nejspíš použijete return.

Příklady

My budeme v seriálu používat přesně tuto metodu připojování. Pro demonstrativní účely máme na serveru Linuxsoftu k dispozici databázi; platné hodnoty připojovacích údajů však nezveřejním. Na začátku každého databázového skriptu budu vkládat soubor začlenění (něco jako výše include("config.php")), který bude tyto údaje obsahovat. Ve výpisu zdrojového kódu souboru bude tento řádek nahrazen komentářem; fungovat to bude normálně.

Verze pro tisk

pridej.cz

 

DISKUZE

Pripojeni pres unixovy socket 11.8.2004 17:13 Jan Houštěk
|- Re: Pripojeni pres unixovy socket 11.8.2004 19:58 Petr Zajíc
| L Re: Pripojeni pres unixovy socket 11.8.2004 20:20 Jan Houštěk
L Re: Pripojeni pres unixovy socket 12.8.2004 20:47 Michal Kubeček
fuknce nefunguje 12.8.2004 10:29 Petr Šigut
|- Re: fuknce nefunguje 12.8.2004 11:07 Petr Zajíc
| L Re: fuknce nefunguje 12.8.2004 11:26 Petr Šigut
L Re: fuknce nefunguje 28.6.2009 16:16 swosh
  L Re: fuknce nefunguje 22.9.2009 17:13 Josef "Mustapha_CZE" Pavlík
nefunguje mi to 10.4.2005 20:20 Temistokles
SERVER_ADDR 18.8.2005 12:34 Joe
func.php/include--config.php 11.1.2008 20:23 rudhas gasper
undefinet function 6.3.2008 21:53 Dan Pelíšek
L Re: undefinet function 7.3.2008 00:05 Ondřej Čečák
  |- Re: undefinet function 7.3.2008 19:55 Dan Pelíšek
  L Re: undefinet function 9.3.2008 16:53 Dan Pelíšek
Bezpecnost- pripojeni mysql z php 10.10.2009 01:13 rada tanat
  L Re: Bezpecnost- pripojeni mysql z php 12.10.2009 15:46 Aleš Hakl




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

1.8.2017 7:32 / Cassidy
structural consultants

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

26.7.2017 21:12 / Jaromir Obr
Podminka

15.6.2017 9:34 / Ondřej Havlas
php,

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze