Databáze - úvod
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
$sql_spatne2 = "SELECT * FROM zbozi WHERE Priv = 2 AND Naze
like '%".$_GET['search']."'";
$search = mysql_real_escape_string($_GET['search']);$sql_spravne2 = "SELECT * FROM zbozi WHERE Priv = 2 AND Nazev
like '%".$search."'";
echo htmlspecialchars("Spatne 2: ".$sql_spatne2);echo "<br/>";echo htmlspecialchars("Spravne 2: ".$sql_spravne2);
Veškeré skripty musí být ošetřeny na
SQL Injection
..je to zápočtová podmínka
PDO
Co to jePDO
PDO je rozšíření PHP modulu o databázovou vrstvu
Abstraktní přístup k DB
Implementace pro nejběžnější DB (mysql, oracle, pg, ])
Podpora transakcí
Objektový přístup
<?php
$user = "x36www_user";
$pass = "x36heslo";
try {
$dbh = new PDO('mysql:host=localhost;dbname=x36www',
$user, $pass, array(
PDO::ATTR_PERSISTENT =>
true
));
$dbh->beginTransaction();
$dbh->exec("insert into zbozi (Nazev, Popis, ObrazekURL,
$dbh->exec("insert into zbozi (Nazev, Popis, ObrazekURL,
Cena)
values ('Podložka', 'Podložka pod myš', 'podlozka.jpg',
'46')");
$dbh->commit();
} catch (Exception
$e) {
$dbh->rollBack();
echo "Failed: " . $e->getMessage();
}
?>
PREPARED STATEMENTS
Zpracování dotazu databází
Typické fáze zpracování
Cache
lookup
Parse
Check
access
rights
….
Optimize
Execute
Query
Cache
PreparedStatement provádí optimalizaci jednou, dále posílá
data do fáze execute
Cache
Náročná fáze,
znovupoužitelý
výsledek
$dbh->beginTransaction();
$stmt = $dbh->prepare("INSERT INTO zbozi (Nazev, Popis,
ObrazekURL, Cena)
VALUES (:nazev, :popis, :url, :cena)");
$stmt->bindParam(':nazev', $nazev);
$stmt->bindParam(':popis', $popis);
$stmt->bindParam(':url', $url);
$stmt->bindParam(':cena', $cena);
// vloz jeden zaznam
$nazev = 'DVD mechanika';
$popis = 'DVD vypalovačka';
$popis = 'DVD vypalovačka'
$url = 'dvdobrazek.jpg';
$cena = '350';
$stmt->execute();
// vloz dalsi zaznam
$nazev = 'DVD mechanika 2';
$popis = 'DVD vypalovačka 2';
$url = 'dvdobrazek2.jpg';
$cena = 190;
$stmt->execute();
$dbh->commit();
$dbh->beginTransaction();
$stmt = $dbh->prepare("INSERT INTO zbozi (Nazev, Popis,
ObrazekURL, Cena)