====== Přístup k databázi, PDO ======
===== MySQL databáze - zřízení a přístup =====
Pro připojení se k databázi z PHP budete potřebovat následující údaje:
* uživatelské jméno - Vaše uživatelské jméno,
* heslo - "wa1", lze zmenit později
* hostitel - v našem případě ''"mysql:dbname=vase_uzivatelske_jmeno;host=localhost"''.
Pro práci s obsahem databáze můžete používat aplikaci [[http://course-wa1.felk.cvut.cz/phpmyadmin|phpMyAdmin]]
===== Nástěnka =====
Implementujte nástěnku, které bude jako úložiště zpráv sloužit MySQL databáze. Ve své databázi pro účely úlohy vytvořte tabulku ''y36tw1_record'' pomocí následujícího skriptu.
DROP TABLE IF EXISTS `y36tw1_record`;
CREATE TABLE IF NOT EXISTS `y36tw1_record` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(100) NOT NULL ,
`author` VARCHAR(100) NULL ,
`date` DATETIME NOT NULL ,
`text` TEXT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_czech_ci;
Každý příspěvek na nástěnku má
* titulek (povinný),
* jméno autora (nepovinné),
* datum vzniku (povinné),
* text (nepovinný).
Implementujte pomocí //[[http://php.net/pdo|PDO]]// následující funkce, nezapomeňte ošetřit možné chyby.
- spojení se s databázovým serverem, volba databáze
-- zobrazení všech záznamů,
.. SELECT * FROM y36tw1_record
-- zobrazení záznamů od daného autora,
.. SELECT * FROM y36tw1_record WHERE author = 'autor'
-- přidání příspěvku pomocí formuláře,
.. INSERT INTO y36tw1_record(id,title,author,date,text) VALUES(NULL, 'titulek', 'autor', casova_znamka, 'text')
- odpojení se od databázového serveru
Vytvořené funkce začleňte do připravené šablony ''nastenka.php''. Ošetřete situace, kde by mohlo docházet k útoku [[http://cs.wikipedia.org/wiki/SQL_injection|SQL injection]].
===== Prepared statements =====
Zvažte, jaké hlavní výhody přináší použití [[http://cz2.php.net/manual/en/class.pdostatement.php|prepared statements]]. Upravte kód tak, aby prepared statements využíval.
/*
===== Domácí úkol =====
Upravte {{courses:A7B39WA1:tutorials:07b:hw08.zip|příklad ze cvičení}} tak, aby vytvoření modelu bylo ošetřené proti SQL injection.
===== Řešení =====
{{http://course-wa1.felk.cvut.cz/~vlachzd1/reseni/08.zip | 08 PDO }}
*/