tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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.