PHP, díl 7. – funkce pro práci se SQL servery

22. března 2000
Computer 5/00 SDÍLET NA FACEBOOKU TWEETNOUT
V dnešním, závěrečném dílu si probereme nejdůležitější funkce PHP, které nám umožní spolupracovat se SQL serverem.
V příkladech budeme používat příkazy pro práci s PostgreSQL. Aby nebyli ochuzeni ani ti, kdo si PHP zkoušejí pod Windows, uvedeme vždy i alternativu v MySQL.

Pracovat budeme s tabulkou z minulého dílu. Tabulka lidi v databázi db1 má tuto strukturu:

Jmeno prijmeni rod_cislo

a obsahuje tyto 3 řádky dat:

Petr Novák 7510055838
Pavel Nový 6412041234
Jirka Nováček 5508125066

Prvním krokem by mělo být připojení k databázi.

$spojeni=Pg_Connect("dbname=db1 user=pepa password=Xpepa12");

nebo pro MySQL:

$spojeni=MySQL_Connect("mysql.server.cz", "pepa", "Xpepa12");

Všimněte si rozdílů: u PgSQL se přímo při připojení zadává jméno databáze, u MYSQL se připojujete pouze k počítači, jméno konkrétní databáze se použije až při vlastním SQL dotazu.

Do proměnné $spojeni (je typu integer) se uloží číslo spojení, na které se dále ve skriptech odvoláváme.

Parametrů při připojování k PgSQL může být více, záleží na konkrétní situaci (lze zadat číslo portu, tty, host, ...)

Nyní můžeme přikročit k vlastnímu dotazu:

$vysledek=Pg_Exec($spojeni,"SELECT * FROM lidi");

nebo pro MySQL:

$vysledek=MySQL_DB_Query("db1","SELECT * FROM lidi",$spojeni);

Tady jsou jasně vidět rozdíly v syntaxi, osobně mi ale syntaxe PgSQL připadá použitelnější.

Do proměnné $vysledek (typu integer) se uloží identifikátor výsledku, na který se odvoláváme při jeho dalším zpracování.

Nyní potřebujeme zjistit, kolik záznamů nám bylo vráceno:

$pocetzaznamu=Pg_NumRows($vysledek);

nebo pro MySQL:

$pocetzaznamu=MySQL_Num_Rows($vysledek);

Pokud by tabulka lidi obsahovala přesně data uvedená na začátku, dostali bychom číslo 3.

Nyní již můžeme získaná data vypsat do stránky:

echo "<table><tr><td>JMÉNO</td><td>PŘÍJMENÍ</td><td>RČ</td></tr>";
for ($pom=0; $pom<$pocetzaznamu; $pom++):
  $zaznam=Pg_Fetch_Row($vysledek, $pom);
  $jmeno=$zaznam[0];
  $prijmeni=$zaznam[1];
  $rc=$zaznam[2];
  echo "<tr><td>$jmeno</td>";
  echo "<td>$prijmeni</td>";
  echo "<td>$rc</td></tr>";
  endfor;
echo "</table>";
Každý záznam vrácený na dotaz má své "pořadové" číslo. Pomocí něj je pak možno se dopídit konkrétních dat:

$zaznam=Pg_Fetch_Row($vysledek, $pom);

Tato funkce uloží do pole $zaznam jednotlivé údaje, přes indexy jsme pak schopni uložit údaje do proměnných.

U MySQL by se skript musel trošku upravit:

while ($zaznam=MySQL_Fetch_Row($vysledek)):
  $jmeno=$zaznam[0];
  $prijmeni=$zaznam[1];
  $rc=$zaznam[2];
  echo "<tr><td>$jmeno</td>";
  echo "<td>$prijmeni</td>";
  echo "<td>$rc</td></tr>";
endwhile;
Jak je vidět, funkce MySQL_Fetch_Row() pracuje trochu odlišně: má pouze jeden parametr (při přečtení jednoho záznamu dochází k inkrementaci indexu automaticky). Pokud chceme pracovat s konkrétním záznamem z výsledku, musíme použít funkci MySQL_Data_Seek($vysledek, $cislozaznamu);

Následné volání funkce MySQL_Fetch_Row() pak přečte konkrétně tento záznam.

Výsledná tabulka by pak vypadala takto:

JMÉNO PŘÍJMENÍ
Petr Novák 7510055838
Pavel Nový 6412041234
Jirka Nováček 5508125066
Jak sami vidíte, základní práce s databázemi v PHP opravdu není nic složitého.

V tomto jednoduchém příkladu jsme ale uvedli pouze malou část dostupných funkcí. Jejich plný výčet s komentářem najdete buď v manuálech, nebo v knize pana Koska o PHP (lze koupit v knihkupectvích nebo na www.vltava.cz). Tato na dnešní dobu aktuální publikace rozebírá práci s PHP do hloubky, obsahuje mnoho konkrétních příkladů, je psána srozumitelně i pro začátečníka a hlavně obsahuje referenční přehled funkcí. Vřele doporučuji.

Diskuze (10) Další článek: Computer 5/00

Témata článku: Software, Programování, PHP, Servery, Echo, SQL, Novák, Fun, SQL Server, Výsledné dílo, Syntax, Funkce, Plný výčet, Díl


Určitě si přečtěte

Dostali jste nový počítač? Tohle s ním udělejte, než ho začnete používat

Dostali jste nový počítač? Tohle s ním udělejte, než ho začnete používat

** Každý nový počítač si zaslouží počáteční péči ** Odinstalujte bloatware a nezapomeňte na vhodné nastavení ** Poradíme, jak se o počítač s Windows 10 postarat

David Polesný, Stanislav Janů | 71

David PolesnýStanislav Janů
PočítačeNotebooky
AMD uvádí grafické karty Radeon RX 6800, 6800 XT a 6900 XT. Útočí přímo na modely od Nvidie

AMD uvádí grafické karty Radeon RX 6800, 6800 XT a 6900 XT. Útočí přímo na modely od Nvidie

** AMD představilo tři nové grafické karty ** Všechny s architekturou RDNA2, kterou používají i PS5 a Xbox Series ** Karty útočí přímo na GeForce RTX 3000

Karel Javůrek | 77

Karel Javůrek
Radeon RX 6000Grafické kartyAMD
26 užitečných rozšíření pro Chrome: Naučte prohlížeč nové věci

26 užitečných rozšíření pro Chrome: Naučte prohlížeč nové věci

** Prohlížeč Chrome obsahuje širokou škálu funkcí, neumí ale všechno ** Jeho schopnosti můžete rozšířit pomocí rozšíření ** Vybrali jsme pro vás zajímavé a užitečné doplňky

Karel Kilián | 44

Karel Kilián
Doplňky do prohlížečeChromeProhlížeče
Air Bank, Fio banka a MONETA zakládají alianci pro bankovní identitu
Jakub Čížek
BankaČeskoeGovernment
Nejlepší notebooky do 10 000 korun: Co má ještě smysl kupovat. A co ne?

Nejlepší notebooky do 10 000 korun: Co má ještě smysl kupovat. A co ne?

** Notebooky s cenou do deseti tisíc korun jsou plné kompromisů ** Existuje několik modelů dobře použitelných pro nenáročné použití ** Vhodnou alternativou jsou tablety nebo repasované počítače

David Polesný | 94

David Polesný
Jak vybrat notebookNotebooky
Lidl buduje chytrou domácnost, propojí všechno se vším
Lukáš Václavík
LidlChytrá domácnostIoT

Aktuální číslo časopisu Computer

Jak prodloužit výdrž notebooku

Velké testy: gamepady a inkoustové tiskárny

Důkladný test Sony Playstation 5