soulik icon

MySQL I

soulik | PRO | 03/26/13 11:02:34 PM UTC | 0 ⭐ | 254 👁️ | Never ⏰ | []
PHP |

3.42 KB

|

None

|

0 👍

/

0 👎

<?php
    $host = 'localhost';
    $meno = 'test';
    $heslo = 'Wo2mOr0nhBHct6HWfl4H';
 
    try{
        //vytvorenie spojenia s MySQL serverom
        $spojenie = new mysqli($host, $meno, $heslo);
        //kontrola úspešnosti spojenia s MySQL serverom
        if ($spojenie->connect_error) {
            throw(new Exception('Chyba spojenia: '.$spojenie->connect_error).'<br/>');
        }
        //výber databázy "test"
        if ($spojenie->select_db('test') === TRUE){
/*
    vytvorenie tabuľky "tabulka1" ak ešte neexistuje
        - používa sa metóda "real_query", pretože SQL dotaz je statický resp. nemenný,
        vykoná len raz, ak daná tabuľka neexistuje a navyše neočakávame vrátenie výsledkov
*/
            if ($spojenie->real_query(
<<<SQL
CREATE TABLE IF NOT EXISTS `test`.`tabulka1` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `nazov` VARCHAR(45) NOT NULL ,
    `cena` FLOAT(5,2) NOT NULL DEFAULT 0.0 ,
    PRIMARY KEY (`id`) )
    ENGINE = MyISAM;
SQL
            ) === TRUE){
/*
    bezpečné vloženie dát do tabuľky "tabulka1"
        - používa sa metóda "prepare" na pripravenie dotazu
        - pomocou metódy "bind_param" namiesto znakov "?" sa dosadia príslušne pripravené vstupné hodnoty,
          ich poradie je zhodné s poradím parametrov
        - text "sd" značí, že prvý parameter je textový reťazec a druhý je desatinné číslo
        - celý príkaz sa završí metódou "execute", ktorá celý pripravný dotaz vykoná
        - pripravený dotaz môžeme vykonať viackrát po sebe, zakaždým s inými vstupnými hodnotami
*/
                $nazov = 'produkt1';
                $cena = 123.45;
                
                $dotaz1 = <<<SQL
INSERT INTO `test`.`tabulka1` (`nazov`,`cena`) VALUES (?, ?);
SQL;
                $prikaz1 = $spojenie->prepare($dotaz1);
                if ($prikaz1 !== FALSE){
                    if ($prikaz1->bind_param('sd',$nazov, $cena) === TRUE){
                        if ($prikaz1->execute() === TRUE){
                            echo 'Vstupné hodnoty sa úspešne vložili do tabuľky<br/>';
                        }
                        
                        $nazov = 'produkt2';
                        $cena = 456.78;
                        
                        //opätovné vloženie dát, tentoraz ale s inými hodnotami
                        
                        if ($prikaz1->execute() === TRUE){
                            echo 'Vstupné hodnoty sa úspešne vložili do tabuľky<br/>';
                        }
                    }
                    $prikaz1->close();
                }
/*
    bezpečný výber dát z tabuľky "tabulka1"
        - vyberú sa položky, ktorých názov sa začína slovom "pro" a zároveň cena je väčšia ako 10
        - používa sa metóda "prepare" na pripravenie dotazu, proces je obdobný ako v predošlom prípade
        - výstupné hodnoty položiek sa uložia do premenných pomocou metódy "bind_result"
        - výsledné položky sa postupne vyberú metódou "fetch" a vypíšu sa do prehľadnej tabuľky
*/
                $nazov = 'pro%';
                $cena = 10.0;
                
                $dotaz2 = <<<SQL
SELECT `id`,`nazov`,`cena` FROM `test`.`tabulka1` WHERE (`cena` > ?) AND (`nazov` LIKE ?);
SQL;
                $prikaz2 = $spojenie->prepare($dotaz2);
                if ($prikaz2 !== FALSE){
                    if ($prikaz2->bind_param('ds',$cena, $nazov) === TRUE){
                        if ($prikaz2->execute() === TRUE){
                            if ($prikaz2->bind_result($id, $nazov, $cena) === TRUE){
                                echo <<<HTML
<table>
    <thead>
        <th>ID</th><th>Názov</th><th>Cena</th>
    </thead>
HTML;
                                while ($prikaz2->fetch() === TRUE){
                                    echo <<<HTML
    <tr>
        <td>{$id}</td><td>{$nazov}</td><td>{$cena}€</td>
    </tr>
HTML;
                                }
                                echo <<<HTML
</table>
HTML;
                            }
                        }
                    }
                    $prikaz2->close();
                }
            }
        }
    }catch (Exception $vynimka){
        echo $vynimka->getMessage();
    }
?>

Comments