PHP a MySQL – MySQLi - 2. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
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 964×

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 Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

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 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ý