Warning
This page is located in archive. Go to the latest version of this course pages.

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 - “webove aplikace”, 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 Adminer

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í PDO následující funkce, nezapomeňte ošetřit možné chyby.

  1. spojení se s databázovým serverem, volba databáze
  2. zobrazení všech záznamů,

    SELECT * FROM y36tw1_record

  3. zobrazení záznamů od daného autora,

    SELECT * FROM y36tw1_record WHERE author = 'autor'

  4. 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')

  5. odpojení se od databázového serveru

Vytvořené funkce začleňte do připravené šablony nastenka.php.cv.zip Ošetřete situace, kde by mohlo docházet k útoku SQL injection.

Prepared statements

Zvažte, jaké hlavní výhody přináší použití prepared statements. Upravte kód tak, aby prepared statements využíval.

Domácí úkol

Upravte příklad ze cvičení tak, aby vytvoření modelu bylo ošetřené proti SQL injection.

Řešení

PDO rešení - stránka s komentáři

Řešení 2015 - řešení přes mysqli

courses/b6b39zwa/tutorials/07b/start.txt · Last modified: 2017/12/03 13:32 by hurtapet