Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: PDO

Aktivity
Avatar
smoukey
Člen
Avatar
smoukey:12.7.2014 22:26

Zdravím,

měl bych prosbu. V mých pár dotazech zde, jste mi radili, ať používám PDO ať si pročtu tutoriál tady. Tak jsem se na to vrhl a vůbec to nechápu a nejde mi.

Poradil by mi s tím někdo?

Předem děkuji.

 
Odpovědět
12.7.2014 22:26
Avatar
Michal Žůrek - misaz:12.7.2014 22:49

Jaké články jsi četl? Pokud tyto

http://www.itnetwork.cz/…adlo-navstev a
http://www.itnetwork.cz/…ev-dokonceni

tak co konkrétně ti není jasné?

 
Nahoru Odpovědět
12.7.2014 22:49
Avatar
Neaktivní uživatel:12.7.2014 22:54

http://www.amazon.com/…p/0987090879 odporúčam :)
Všeobecne potrebuješ vedieť OOP aby si pochopil ako PDO funguje.

Nahoru Odpovědět
12.7.2014 22:54
Neaktivní uživatelský účet
Avatar
smoukey
Člen
Avatar
smoukey:12.7.2014 23:07

Přesně tyto dva články.

Není my jasné z tohoto článku: http://www.itnetwork.cz/…ev-dokonceni

Jak je tam ta třída databaze.php. Zkoušel jsem to jenom, jestli to půjde. Zkoušel jsem si ze své db vyhledat data.

Obsah třídy jsem neměnil.

<?php
class Databaze {

    private static $spojeni;

    private static $nastaveni = Array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    );

    public static function pripoj($host, $uzivatel, $heslo, $databaze) {
        if (!isset(self::$spojeni)) {
            self::$spojeni = @new PDO(
                "mysql:host=$host;dbname=$databaze",
                $uzivatel,
                $heslo,
                self::$nastaveni
            );
        }
        return self::$spojeni;
    }

    public static function dotaz($sql, $parametry = array()) {
        $dotaz = self::$spojeni->prepare($sql);
        $dotaz->execute($parametry);
        return $dotaz;
    }

}
?>

obsah souboru index.php

header("Content-Type: text/html; charset=utf-8");
function nactiTridu($trida)
        {
            require("tridy/$trida.php");
        }
spl_autoload_register("nactiTridu");

databaze::pripoj('localhost', 'phplearn', '', 'testdb');

To je mi jasné. Ale už nevím jak ten dotaz poskládat.

Nevím jak ten dotaz zavolat.

$vysledek = Databaze::dotaz('
    SELECT COUNT(*) AS pocet
    FROM users');
$data = $vysledek->fetch();
echo $data['pocet'];

Jasně, už to jde, ale ještě tomu pořádně nerozumím. Kdybych chtěl vypisovat dokud něco v db je (třeba články) jak by vypadal dotaz? Spíš jeho výpis?

Jestli jsem to v průběhu psaní této odpovědi správně pochopil, tak by to vypadalo takto:

$vysledek = Databaze::dotaz('
            SELECT *
            FROM clanky');
        $data = $vysledek->fetch();
       echo $data['titulek'].'<br />';
        echo $data['uzivatel'];

Teď jsem to odzkoušel a vypíše mi to jenom 1 řádek :(

Editováno 12.7.2014 23:08
 
Nahoru Odpovědět
12.7.2014 23:07
Avatar
smoukey
Člen
Avatar
smoukey:12.7.2014 23:43

Už vše funguje, po probrouzdání těchto stránek jsem vše našel.

Pro zajímavost, místo fetch() použít fetchall() a pak to pomocí cyklu vypsat :)

 
Nahoru Odpovědět
12.7.2014 23:43
Avatar
Odpovídá na smoukey
Martin Konečný (pavelco1998):13.7.2014 0:02

Osobně doporučuji nejdřív vyzkoušet si PDO jako takové, ne nějaký wrapper. Vyzkoušet si metody query(), exec(), fetch(), fetchAll(), fetchColumn(), lastInsertId(), ať víš, o co jde. Pak se podívej na to, co jsou to parametrizované dotazy (+ metody prepare() a execute()).
Pak se teprve podívej, jak pracují nějaké wrappery, ve kterých se to píše snadněji.

Nahoru Odpovědět
13.7.2014 0:02
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.