soulik

MySQL I

Mar 26th, 2013
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.42 KB | None | 0 0
  1. <?php
  2.     $host = 'localhost';
  3.     $meno = 'test';
  4.     $heslo = 'Wo2mOr0nhBHct6HWfl4H';
  5.  
  6.     try{
  7.         //vytvorenie spojenia s MySQL serverom
  8.         $spojenie = new mysqli($host, $meno, $heslo);
  9.         //kontrola úspešnosti spojenia s MySQL serverom
  10.         if ($spojenie->connect_error) {
  11.             throw(new Exception('Chyba spojenia: '.$spojenie->connect_error).'<br/>');
  12.         }
  13.         //výber databázy "test"
  14.         if ($spojenie->select_db('test') === TRUE){
  15. /*
  16.     vytvorenie tabuľky "tabulka1" ak ešte neexistuje
  17.         - používa sa metóda "real_query", pretože SQL dotaz je statický resp. nemenný,
  18.         vykoná len raz, ak daná tabuľka neexistuje a navyše neočakávame vrátenie výsledkov
  19. */
  20.             if ($spojenie->real_query(
  21. <<<SQL
  22. CREATE TABLE IF NOT EXISTS `test`.`tabulka1` (
  23.     `id` INT NOT NULL AUTO_INCREMENT ,
  24.     `nazov` VARCHAR(45) NOT NULL ,
  25.     `cena` FLOAT(5,2) NOT NULL DEFAULT 0.0 ,
  26.     PRIMARY KEY (`id`) )
  27.     ENGINE = MyISAM;
  28. SQL
  29.             ) === TRUE){
  30. /*
  31.     bezpečné vloženie dát do tabuľky "tabulka1"
  32.         - používa sa metóda "prepare" na pripravenie dotazu
  33.         - pomocou metódy "bind_param" namiesto znakov "?" sa dosadia príslušne pripravené vstupné hodnoty,
  34.           ich poradie je zhodné s poradím parametrov
  35.         - text "sd" značí, že prvý parameter je textový reťazec a druhý je desatinné číslo
  36.         - celý príkaz sa završí metódou "execute", ktorá celý pripravný dotaz vykoná
  37.         - pripravený dotaz môžeme vykonať viackrát po sebe, zakaždým s inými vstupnými hodnotami
  38. */
  39.                 $nazov = 'produkt1';
  40.                 $cena = 123.45;
  41.                
  42.                 $dotaz1 = <<<SQL
  43. INSERT INTO `test`.`tabulka1` (`nazov`,`cena`) VALUES (?, ?);
  44. SQL;
  45.                 $prikaz1 = $spojenie->prepare($dotaz1);
  46.                 if ($prikaz1 !== FALSE){
  47.                     if ($prikaz1->bind_param('sd',$nazov, $cena) === TRUE){
  48.                         if ($prikaz1->execute() === TRUE){
  49.                             echo 'Vstupné hodnoty sa úspešne vložili do tabuľky<br/>';
  50.                         }
  51.                        
  52.                         $nazov = 'produkt2';
  53.                         $cena = 456.78;
  54.                        
  55.                         //opätovné vloženie dát, tentoraz ale s inými hodnotami
  56.                        
  57.                         if ($prikaz1->execute() === TRUE){
  58.                             echo 'Vstupné hodnoty sa úspešne vložili do tabuľky<br/>';
  59.                         }
  60.                     }
  61.                     $prikaz1->close();
  62.                 }
  63. /*
  64.     bezpečný výber dát z tabuľky "tabulka1"
  65.         - vyberú sa položky, ktorých názov sa začína slovom "pro" a zároveň cena je väčšia ako 10
  66.         - používa sa metóda "prepare" na pripravenie dotazu, proces je obdobný ako v predošlom prípade
  67.         - výstupné hodnoty položiek sa uložia do premenných pomocou metódy "bind_result"
  68.         - výsledné položky sa postupne vyberú metódou "fetch" a vypíšu sa do prehľadnej tabuľky
  69. */
  70.                 $nazov = 'pro%';
  71.                 $cena = 10.0;
  72.                
  73.                 $dotaz2 = <<<SQL
  74. SELECT `id`,`nazov`,`cena` FROM `test`.`tabulka1` WHERE (`cena` > ?) AND (`nazov` LIKE ?);
  75. SQL;
  76.                 $prikaz2 = $spojenie->prepare($dotaz2);
  77.                 if ($prikaz2 !== FALSE){
  78.                     if ($prikaz2->bind_param('ds',$cena, $nazov) === TRUE){
  79.                         if ($prikaz2->execute() === TRUE){
  80.                             if ($prikaz2->bind_result($id, $nazov, $cena) === TRUE){
  81.                                 echo <<<HTML
  82. <table>
  83.     <thead>
  84.         <th>ID</th><th>Názov</th><th>Cena</th>
  85.     </thead>
  86. HTML;
  87.                                 while ($prikaz2->fetch() === TRUE){
  88.                                     echo <<<HTML
  89.     <tr>
  90.         <td>{$id}</td><td>{$nazov}</td><td>{$cena}€</td>
  91.     </tr>
  92. HTML;
  93.                                 }
  94.                                 echo <<<HTML
  95. </table>
  96. HTML;
  97.                             }
  98.                         }
  99.                     }
  100.                     $prikaz2->close();
  101.                 }
  102.             }
  103.         }
  104.     }catch (Exception $vynimka){
  105.         echo $vynimka->getMessage();
  106.     }
  107. ?>
Advertisement
Add Comment
Please, Sign In to add comment