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.