Jump to content

návod PHP III. Databáze


Ewwe

Recommended Posts

  • Administrátor

Obsah:

  1. MariaDB
  2. MySQLi
  3. PDO
  4. Dibi

 

 

 

1. MariaDB

MariaDB je fork klasického MySQL s vylepšeními ohledně výkonu. Pokud si můžete vybrat MariaDB by měla být jasná volba. Nejedno vývojové prostředí ( XAMMP nebo WAMP ) Vám dovolí si jednoduše vybrat mezi MySQL a MariaDB. 

 

2. MySQLi

MySQLi je náhrada za mysql co se týče PHP. Jelikož od verze 5.5 jsou funkce s prefixem mysql_ označené jako depreceated a od verze 7.0 jsou dokonce ostraněné. S MySQLi se dá pracovat buď procedurálně nebo objektovně. 

 

Připojení k DB ( procedurální ):

$connection = mysqli_connect( "127.0.0.1","root","pwd", "konkretni_db" );

Připojení k DB ( objektové ):

$mysqli = new mysqli( "127.0.0.1","root","pwd","konkretni-db");

Určitě si myslíte , že v tom momentálně není moc rozdíl. To přijde. V procedurálních funkcí je nutné doplňovat proměnnou $connection například

$result = mysqli_query( $connection , "SELECT * FROM users" );

naproti tomu u objektového přístupu

$result = $mysqli->query("SELECT * FROM users");

Prakticky to znamená , že do $mysqli je uložený objekt mysqli který obsahuje všechny potřebné informace vč. instance připojení

 

Načítání výsledků z db je v obou případěch relativně stejné

// procedurální
while( $row = mysqli_fetch_assoc( $result ) )
{
   echo $row["user_name"];
}

// objektové
while( $row = $result->fetch_assoc() )
{
   echo $row["user_name"];
} 

Mě osobně přijde objektové využívání přehlednější než to procedurální. Ale v případě že budete při připojení používat mysqli tak je to jen na Vás.

 

3. PDO

Já osobně PDO moc nefandím. Tak nějak mi nevyhovuje způsob zápisu a celý koncept. Ano chápu , že PDO je nové možná rychlejší , bezpečnější a propracovanější a nabízí několik nových možností jako například před-připravování queryn atd. 

Připojení k db pomocí PDO

$pdo new PDO("mysql:host=127.0.0.1;dbname=konkretni_db;","root","pwd");

Vytvoření dotazu pomocí prepare:

$statement = $pdo->prepare("SELECT * users WHERE user_name = ?");
$statement->execute(["Ewwe"]);
$result = $statement->fetchAll();

Osobně se moc nechci pouštět do PDO jelikož mu tolik nerozumím. Raději nechám PDO na někoho povolanějšího.

 

4. Dibi

Kde jsem ale naprosto jako doma je Dibi. Je to databázový layer vytvořený panem Davidem Grudlem , který stojí za jedním z nejpopulárnějších frameworků ( Nette ). Dibi bylo psáno za účelem ušetřit a ulehčit práci programátorům. Dibi přináší několik "featur" , které jsou podle mého názoru užasné a dnes bych si nedokázal představit pracovat s db bez Dibi. Dibi chci věnovat samostatný díl ( dnes , zítra ) protože ja tak natolik obsáhlé , že by se těžko slučovalo stímto návodem.

 

To by bylo pro tento návod vše a v dalším se budu věnovat tady právě Dibi a Tracy 

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

  • Administrátor

Jak říká Hnátek . Už jen když si vygooglíš co SQL znamená ( Structured Query Language ) Nebo tak něco jde o to L ( Language ). 

Link to comment
Share on other sites

  • Administrátor

Viem viem, len či to nahodou nechceš niekedy aj vysvetliť icon_e_smile.gif

To bylo na toho arci. Až udělám dibi tak můžu udělat i SQL ale jako tam není nic moc co vysvětlovat mi přijde. SQL je hodně jednoznačný

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 2 weeks later...
  • Administrátor

Súper návody veľmi pekne ďakujem icon_e_smile.gif Dúfam že budeš pokračovať ale budu niekedy návody aj na konkrétne veci? 

co máš na mysli konkretne

Link to comment
Share on other sites

PDO je univerzalni db system. Tedy napises appku v PDO a pak si tam muzes nasadit MySQL, FireBird nebo cokoliv chces bez toho, aby jsi primo neco prepisoval v kodu.

 

Zapisování SQL příkazu stylem

 

"SELECT * users WHERE user_name = ?"

Už je dneska standard, pomocí prepare a execute se da lehce předejít věcem jako SQL injection (kotrola a escapovaní znaků atp...)

Link to comment
Share on other sites

  • Administrátor

PDO je univerzalni db system. Tedy napises appku v PDO a pak si tam muzes nasadit MySQL, FireBird nebo cokoliv chces bez toho, aby jsi primo neco prepisoval v kodu.

 

Zapisování SQL příkazu stylem

Už je dneska standard, pomocí prepare a execute se da lehce předejít věcem jako SQL injection (kotrola a escapovaní znaků atp...)

Ano v PDO si můžeš zvolit engine databáze. Já osobně používám Dibi a to je podle mě ještě lepší než PDO samo o sobě.

 

Návod na Dibi chci dopsat tento týden

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Ano v PDO si můžeš zvolit engine databáze. Já osobně používám Dibi a to je podle mě ještě lepší než PDO samo o sobě.

 

 

Vďaka čomu je lepšie? Vzhľadom na to, že si autor návodu, ktorý popisuje (chabo) a porovnáva (ako si to ty nazval) "databáze", očakávam od teba aj objektívne argumenty, prečo si zvoliť práve to API, ktoré ospevuješ.

Link to comment
Share on other sites

Ano v PDO si můžeš zvolit engine databáze. Já osobně používám Dibi a to je podle mě ještě lepší než PDO samo o sobě.

 

Návod na Dibi chci dopsat tento týden

Každý databázový system použitý na amíru je lepší než PDO, ale jde o to jak velký projekt děláš, na kolika strojích pojede a každý stroj si si může nárokovat jiný DB systém. A pokud to pak máš nějak udržovat, tak je jednodužší PDO i za cenu toho, že bude o malinko pomalejší. Ale zase děláme weby, jestl ise stránka bude načítat 1s nebo 2s je úplně fuk :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...