Autor Zpráva
leorond
Profil
Ahoj, rád bych svůj redakční systém předělal z MySQL do MySQLi ale chci se zeptat zda se mi vyplatí předělávat ho do MySQLi nebo je lepší napsat nový, pro a proti.

Děkuji
Alphard
Profil
leorond:
nebo je lepší napsat nový, pro a proti
Nový redakční systém? Jestli se kvůli změně databázové vrstvy nevyplatí zachovat nic z původního redakčního systému, je to dost divné...
V každém případě, hned bych použil dibi; MySQLi extenze je sice lepší než MySQL, ale stejně nic moc...
leorond
Profil
V čem je lepší dibi než MySQLi?
lionel messi
Profil
leorond:
V čem je lepší dibi než MySQLi?

Za všetky výhody stačí uviesť automatické escapovanie (nehrozí, že programátor na ošetrenie užívateľského vstupu zabudne; tzv. prepard statements v MySQLi sa síce tvária, že robia to isté, trpia však slabinami), prácu s chybami (vyhadzujú sa výnimky, ktoré nechajú zabudnúť na or die a podobné príšery) či prenositeľnosť medzi jednotlivými databázovými systémami. Skúsenejší kolegovia určite doplnia ďalšie. :-)

Alphard radí múdro. Keď už zahadzovať zlé, je vhodné siahnuť po čo najlepšej alternatíve a tou čisté MySQLi (rovnako ako PDO), žiaľ, nie je.
leorond
Profil
lionel messi:
Za všetky výhody stačí uviesť automatické escapovanie

V čem to spočívá? Myslím tím automatické escapování jak funguje?


OMG to vypadá o moc lépe než MySQLi a o dost přehlednější :)


takže když budu chtít upravit v tabulce test text na halo tak mi stačí pouze tento zápis?

$text = "halo";
dibi::query('UPDATE `test` SET `text`=%s', $text);

Je to skoro stejné jako MySQL


To jako vážně?

$arr = [
    'a' => 'hello',
    'b'  => TRUE,
];
dibi::query('INSERT INTO [table]', $arr);
// INSERT INTO `table` (`a`, `b`) VALUES ('hello', 1)

dibi::query('UPDATE `table` SET ', $arr);
// UPDATE `table` SET `a`='hello', `b`=1
Alphard
Profil
leorond:
to vypadá o moc lépe než MySQLi a o dost přehlednější
To je záměr.

Je to skoro stejné jako MySQL
Ano. Proto si to troufám radit i úplným začátečníkům. Kdo se ještě nedostal k pokročilejším konstrukcím, může dibi skutečně používat stejně jako mysql(i) extenzi.
A až se s ním seznámí trochu víc, zjistí, že dibi dokáže značně usnadnit vývoj. Přes věci jako chytré expandování pole, fluent rozhraní nebo fetchAssoc() metodu až po profiler.
leorond
Profil
Tak se to snaží nějak našprtat ale kde dělám chybu zde?

dibi::connect([
    'driver'   => 'mysql',
    'host'     => 'localhost',
    'username' => 'root',
    'password' => '***',
    'database' => 'test',
    'charset'  => 'utf8',
]);

Háže mi to error 500


Existuje vůbec někde nějaký dobrý článek pro připojení k databázi?
Alphard
Profil
Je tam include dibi? Článek snad ani není potřeba, spíš by to chtělo povolit výpis chyb, abychom se dozvěděli něco konkrétnějšího než 500.
leorond
Profil
Nenašel jsem žádný pořádný návod jak na to :D


Zapnul jsem error_reporting ale stále jen Chyba serveru 500.
Alphard
Profil
leorond [#9]:
A jiné chyby se zobrazují?
Další možnosti zobrazení chyb jsou uvedené na Diskuse JPW: Nejčastější potíže s PHP (FAQ) » Zapnutí výpisu všech chyb a varování.
Zdůrazňuji, že zprovoznit si vývojové prostředí, které zobrazuje chyby, je naprosto základní věc pro vývoj. Naslepo programovat nelze. Od tohoto problému nemá smysl utíkat (např. tím, že vzdáš snahu vyzkoušet dibi), i kdybys s tím měl strávit týden, tady je třeba začít.
leorond
Profil
Ano to je naprostý základ ale i přes správnou funkčnost výpisu chyb se zobrazí Chyba serveru 500.
juriad
Profil
A koukáš se na správné místo - totiž do logu? Je jasné, že webová stránka v prohlížeči ti při závažné chybě neřekne nic víc, než uvádíš.
Nemáš náhodou PHP 5.3 nebo starší? Ta už stejně není 1 rok a 3 měsíce podporovaná. (PHP 5.3 nezná zápis polí pomocí hranatých závorek).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: