Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:9.9.2012 19:07

Zdravím,
pracuji na tutoriálu pro XNA, skóre je odesláno ještě s přezdívkou a dalšími daty v get parametru PHP skriptu. Ten data zapíše do databáze. Další PHP skript vrací skóre jako XML, další ho vypisuje jako HTML tabulku.

Snažím se najít co nejjednodušší, pravděpodobně procedurální a nejkratší způsob, jak skripty napsat.

Chtěl jsem to udělat pomocí vkládání mysl_real_esca­pe_string, ale kód to hrozně nafouklo a bylo to opravdu ošklivé. Potom jsem to chtěl dělat přes mysqli_prepare a parametry, to jsem našel mizerně zdokumentované a výsledek opět moc nepřipomíná MySQL dotaz. Nevím jak tohle vypadá s PDO.

Umí PDO nebo MySQLi vložit data ze slovníku? Něco jako query('INSERT INTO skore', $array); ?

Díky za případné návrhy.

Odpovědět
9.9.2012 19:07
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:10.9.2012 12:36
$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.

Nahoru Odpovědět
10.9.2012 12:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:13.9.2012 13:31

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.

Nahoru Odpovědět
13.9.2012 13:31
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:13.9.2012 16:36

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č.

Nahoru Odpovědět
13.9.2012 16:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.