Avatar
smoukey
Člen
Avatar
smoukey:

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):

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Neaktivní uživatel:

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:

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:

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):

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  +1 13.7.2014 0:02
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.