====== 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 }} */