<< 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;
?>
