<< Databáze firmy | Webové databáze | >>
Komunikace s databází MySQL
- běžné programovací jazyky umí pracovat a daty v databázi - PHP, C#, , Java, Delphi, Python ...
- PHP umí pracovat s daty pomocí několika ovladačů (rozšíření)
- aktuálně se používají dva standardní ovladače - MYSQLi a PDO
- MYSQL ovladač
- původní a dnes zastaralý typ ovladače
- dále nerozvíjen, z PHP 7.+ odstraněn
- ovladač stále využívají starší weby
- MYSQLi - MySQL Improved Extension
- vylepšený standardní PHP ovladač pro přístup k databázi MySQL od PHP 5.+
- podpora klasického procedurálního i objektového programování komunikace s MySQL
- PDO - PHP Data Object
- univerzální standardní PHP ovladač od PHP 5.+
- podpora objektového přístupu k různým typům databází - MySQL, SQlite, MS SQL, Oracle ...
- ODBC - Open Database Connectivity
- univerzální ovladač Microsoftu
- umožňuje přístup k různým typům databází pomocí různých programovacích jazyků
- MYSQL ovladač
Postup zpracování dat v PHP
1. Vytvoření připojení k databázi
- zpracování chyb připojení
2. Zaslání SQL příkazu k provedení
zpracování chyb dotazu
3. Zpracování výsledku dotazu
- zpracování chyb výsledku
4. Odpojení od databáze
Vytvoření připojení
- použití funkce mysqli_connect
$spojeni = mysqli_connect($server, $uzivatel, $heslo [,$databaze]);
- použití objektu PDO
$spojeni = new PDO("mysql:host=localhost;dbname=firma", $uzivatel, $heslo);
Sestavení a zaslání SQL dotazu
- použití MYSQLi funkce mysqli_query
$dotaz = "INSERT INTO zamestnanec (jmeno, prijmeni, email) VALUES ('Karel', 'Dvorský', 'kdvorsky@gmail.com')"; $vysledek = mysqli_query($spojeni, $dotaz);
- použití PDO funkce query
$vysledek = $spojeni->query($dotaz);
Zpracování výsledku dotazu
- použití MYSQLi funkce mysqli_fetch_assoc k výpisu řádků tabulky z asociativního pole
while($radek = mysqli_fetch_assoc($vysledek)) { echo "Jméno: " . $radek["jmeno"] . " " . $radek["prijmeni"] . " - Mail: " . $radek["email"] . "<br>"; }
- použití PDO funkce fetchObj k výpisu řádků tabulky z objektu
while ($radek = $vysledek->fetch(PDO::FETCH_OBJ)) { echo "Jméno: ".$radek->jmeno . " "$radek->prijmeni) . "Mail: " . $radek->mail . "<br>"; }
Odpojení od databáze
- použití MYSQLi funkce mysqli_close
mysqli_close($spojeni);
- odpojení pomocí PDO
$spojeni = null;
Příklad komunikace pomocí ovladače MYSQLi
<?php $server = "localhost"; $uzivatel = "root"; $heslo = ""; $databaze = "firma"; // Krok 1: Vytvoření připojení $spojeni = mysqli_connect($server, $uzivatel, $heslo, $databaze); if(!$spojeni) { echo 'Spojení s mysql serverem se nepodařilo navázat.<br>'; } else { echo 'Spojení s mysql serverem bylo úspěšně navázáno.<br>'; // Krok 2: Sestavení a odeslání dotazu mysqli_set_charset($spojeni, "utf8"); $dotaz = mysqli_query($spojeni, "SELECT * FROM zamestnanec"); if(!$dotaz) { echo 'Dotaz vykazuje chybu.<br>'; } else { echo 'Dotaz byl úspěšně vykonán.<br>'; // Krok 3: Zpracování výsledku dotazu while($radek = mysqli_fetch_assoc($dotaz)) { echo "Jméno: " . $radek["jmeno"] . " " . $radek["prijmeni"] . " - Mail: " . $radek["email"] . "<br>"; } } } // Krok 4: Odpojení od databáze $zavreni = mysqli_close($spojeni); if(!$zavreni) { echo 'Spojení s mysql serverem se nepodařilo ukončit.'; } else { echo 'Spojení s mysql serverem se podařilo ukončit.'; } ?>
Příklad komunikace pomocí ovladače PDO
<?php // Krok 1: Vytvoření připojení $spojeni = new PDO("mysql:host=localhost;dbname=firma;charset=utf8","root",""); // Krok 2: Sestavení a odeslání dotazu $dotaz = "SELECT * FROM zamestnanec"; $vysledek= $spojeni->query($dotaz); // Krok 3: prochazeni vysledky while($radek = $vysledek->fetch(PDO::FETCH_ASSOC)) { echo "Jméno: " . $radek["jmeno"] . " " . $radek["prijmeni"] . " - Mail: " . $radek["email"] . "<br>"; } // Krok 4: Odpojení od databáze $spojeni = null; ?>