PHP a MySQL – MySQLi - 2. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

PHP a MySQL – MySQLi - 2. dílPHP a MySQL – MySQLi - 2. díl

 

PHP a MySQL – MySQLi - 2. díl

Google       Google       1. 6. 2010       29 483×

Pokračování článku o rozšíření MySQLi. Tato část bude věnována především prepared statements a jejich použití v PHP.

Reklama
Reklama

Při práci s databází musíme vždy zvažovat bezpečnost a výkon. Pokud do SQL dotazů vkládáme data získaná od uživatele, je nutné ověřit tato data a v případě, že obsahují nebezpečné znaky, tak je ošetřit. Pokud zpracováváme větší množství dat, nebo posíláme databázi velký počet dotazů, musíme si dát pozor na paměťové a časové limity. MySQL od verze 4.1 umožňuje využívat tzv. prepared statements (dál jen PS), které nám tyto věci mohou usnadnit. V PHP lze PS využívat jen s pomocí rozšíření MySQLi.

Prepared Statements

PS jsou nástroj, který nám umožní spustit opakovaně daný SQL příkaz s různými parametry. Umožňují nám oddělit logiku a data v SQL. Jednoduchý PS může vypadat např. takto:

SELECT * FROM users WHERE ID = ?

Otazník v dotazu zastupuje parametr, který budeme databázi předávat později.

Důvodů pro využití PS je hned několik. Z bezpečnostního hlediska je výhodné oddělení logiky od dat v SQL dotazu. Není třeba řešit ochranu před útoky typu SQL injection, protože parametry předávané dotazu nemohou být včleněny do logiky dotazu.

Druhým přínosem PS je zlepšení výkonosti, k čemuž dojde ze dvou hlavních důvodů. Pokud voláme stejný dotaz opakovaně, pouze s různými parametry, tak oceníme nutnost parsovat dotaz pouze při prvním použití, při dalších dotazech se bude již používat předpřipravená verze. Druhou výkonnostní výhodou PS je využívání nového binárního protokolu pro přenos dat mezi klientem a serverem. Tradiční protokol nejprve všechna data zkonvertuje na string, odešle je a na serveru dochází ke zpětné konverzi na původní datový typ. Tím dojde ke zpomalení přenosu a nárustu velikosti předávaných dat. Binární protokol posílá všechna data v binární podobě.

PS je možné využít v SQL dotazech typu INSERT, REPLACE, UPDATE, DELETE, CREATE TABLE a SELECT.

Příklady použití PS v PHP

PHP pro vytvoření PS používá metodu mysqli::prepare(), jejímž jediným parametrem je SQL příkaz. Její použití si můžeme ukázat na jednoduchém příkladu.

prepare('SELECT `ID`, `Login`, `Prava` 
                           FROM `uzivatele` 
                           WHERE `Jmeno` = ?');

//Potom mu předáme parametr(y) pomocí metody bind_param()
//První parametr metody definuje datový typ jednotlivých proměnných
//s = string
$stmt->bind_param('s', $jmeno);

//Nakonec zavoláme metodu execute(), která dotaz odešle do databáze
$stmt->execute();

//Databáze přijala a zpracovala dotaz, jak se ale dostaneme k výsledkům?
//Nejprve musíme pomocí metody bind_result() 
//propojit jednotlivé sloupce výsledku s PHP proměnnou
$stmt->bind_result($id, $login, $prava);

//Metoda fetch() tyto proměnné naplní daty z aktuálního řádku výsledku
while ($stmt->fetch())
{
  echo 'Uživatel s identifikátorem ' . $id . ' má login ' . $login . 
        ' a oprávnění ' . $prava . '.';
}

//Posledním krokem je ukončení PS a uvolnění použitých zdrojů pomocí metody close()
$stmt->close();
?>

Pro nové projekty je určitě výhodnější využívat PS než klasický přístup k databázi. Jejich hlavní výhodou je kromě vyšší rychlosti i oddělení dat a logiky dotazu, a tím i zvýšení bezpečnosti aplikace. Jelikož nejde o žádnou novinku, dá se předpokládat, že je bude možno používat na většině webhostingů.

Odkazy

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Zdeněk MoravecAutor se pohybuje v oblasti vývoje nových materiálů. Mezi jeho koníčky patří tvorba webových aplikací, programování v jazycích Java, .NET (C#), Perl, elektronika a sport (běh). Hojně využívá sázecí systém LaTeX.
Web     Facebook    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

Reklama autora

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý