Diskuze: PHP: Jednoduché vložení do databáze
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
$data=array($par1,$par2,$par3);
$insert=$pdo->prepare("INSERT INTO skore VALUES (?,?,?)");
$insert->execute($data);
Ale netuším, jak bych to dělal procedurálně. Ten SQL dotaz by šel i poskládat podle slovníku, ale buď to bude komplikované, anebo krátké a stěží pochopitelné, např:
$sql="INSERT INTO skore (".implode(',',array_keys($data)).") VALUES (".implode(',',array_fill(0,sizeof($data),"?")).")";
Zpravidla však vím, jaká data vkládám a proto takové šílenosti nedělám.
To první vypadá opravdu dobře. Ono to samo pozná typ v tom poli a dle
toho tam dá uvozovky, odescapuje nebo nechá číslo být? Někdy lituji, že
jedeme na té Dibi Někdy
určitě přejdeme na PDO, tam jde foreach ale až od PHP 5.4 myslím, to
ještě nemáme.
Do SQL dotazu se ta data vůbec nevkládají. SQL server obdrží samostatně dotaz a zvlášť data. Escapování se tedy neřeší a uvozovky už vůbec ne. Dokonce se tím dají obejít limity délky SQL dotazu, což byl problém například při ukládání fotek a videa přímo do tabulky. Data se přenáší binárně.
Cyklus foreach mi v PDO fungoval vždy, podle dokumentace je to od verze PHP 5.1.
PDO považuji za kvalitně zjednodušené ORM. Stačilo k ovladači doplnit pár objektových funkcí a odpadla spousta problémů. PDO dokonce umí data nacpat přímo do objektu. A podle mých měření je i o něco rychlejší, než standardní ovladač.
Zobrazeno 4 zpráv z 4.