Oznámení
fetchAll pri jednom vybiranem sloupci
před 11 lety

- arron
- Člen | 462
Dobry den,
nejsem si jisty zda je toto chyba, ale prijde mi to prinejmensim jako
podivnost:-)
<?php
$res=dibi::query("SELECT name FROM `module` WHERE id = 1");
$row=$res->fetchAll();
?>
V $row bych v tuto chvili predpokladal neco takoveho:
array(1) { [0]=> array() { ["name"]=> string(13) "Configuration" } }
ale dostanu toto:
array(1) { [0]=> string(13) "Configuration" }
Zatim co, kdyz ke sloupci name pridam jeste dalsi, tak uz vse
funguje dle ocekavani.
Dekuji za odpoved.
Budte s pozdravem.
před 11 lety

- David Grudl
- Nette Core | 6806
Pokud má výsledek jen jeden sloupec, fetchAll vrátí zjednodušenou tabulku ve tvaru
array(1) { [0]=> string(13) "Configuration" }
Faktem je, že to nemusí být ideální (chování se dá změnit třetím
parametrem, tj. fetchAll(NULL, NULL, FALSE)). Netuším, jestli na
tuto vlastnost někdo spoléhá, jestli ji změnit.
před 11 lety

- arron
- Člen | 462
Jde mi o to, ze kdyz se nekde zpracovavaji vysledky z ruznych dotazu (napr. v nejake mezivrstve mezi dibi a zbytkem aplikace), tak je potreba ke vsem takovym to vysledkum pristupovat stejnym zpusobem (a je pak prirozene ponekud prekvapive, kdyz se tam najednou objevi neco neocekavaneho). A i kdyby se naprogramovala nejaka vyjimka, tak v tuto chvili neexistuje zpusob jak data zrestaurovat (dana funkce nema absolutne zadne tuseni, jaky presne dotaz se posilal).
před 11 lety

- David Grudl
- Nette Core | 6806
arron napsal(a):
Jde mi o to, ze kdyz se nekde zpracovavaji vysledky z ruznych dotazu (napr. v nejake mezivrstve mezi dibi a zbytkem aplikace), tak je potreba ke vsem takovym to vysledkum pristupovat stejnym zpusobem (a je pak prirozene ponekud prekvapive, kdyz se tam najednou objevi neco neocekavaneho). A i kdyby se naprogramovala nejaka vyjimka, tak v tuto chvili neexistuje zpusob jak data zrestaurovat (dana funkce nema absolutne zadne tuseni, jaky presne dotaz se posilal).
Tomu rozumím a také si dnes myslím, že tohle chování nebyla nejšťastější volba. Jen se bojím, že změna může způsobit vážné nekompatibility.