Autor Zpráva
tomáš
Profil *
zdravím,
mám v mysql tabulku, která má jeden sloupec (name varchar) a je v ní x řádků.
spustím mysql_query('select name from tbl') a rád bych, abych výsledek dostal jako array('row1','row2','row3',...'rown').
mysql_fetch_array mi umožní vrátit řádek jako enumerované či asociativní pole. problém je to silně řezané. dostanu (po cyklu):

Array
(
    [0] => row1
)
Array
(
    [0] => row2
)
...


rád bych ale nějakým způsobem přinutil php (či přímo upravil mysql dotaz) tak, abych dostal rovnou:

Array('row1','row2','row3',...'rown')


je třeba v tom cyklu plnit nějaké pole které si k tomu extra vytvořím, a nebo je to možné udělat i bez cyklu? díky.
ShiraNai7
Profil
Bez cyklu asi ne, mysql_fetch_assoc a podobné vrací vždy po jednom řádku.
Keeehi
Profil
A co se ti nelíbí na tomto?
$vysledek=mysql_query($dotaz);
while(list($trash)=mysql_fetch_row($vysledek))
  $vystup[]=$trash;
Majkl578
Profil
Tohle mysql rozšíření neumí, ale umí to mysqli.
tomáš
Profil *
Majkl578:
díky! to je to, co jsem hledal.

Keeehi:
ten cyklus. je to tak triviální věc, že nevidím důvod proč bych k tomu měl potřebovat cyklus a speciální proměnnou namísto jednoho zavolání fce.
Joker
Profil
tomáš:
nevidím důvod proč bych k tomu měl potřebovat cyklus a speciální proměnnou namísto jednoho zavolání fce
Složitost algoritmu přece není určena tím, jestli je v kódu napsaný přímo, nebo je v nějaké funkci.

Ostatně:
function fetch_all($dbresult){
  $data = array();
  if(gettype($dbresult) != "resource") return $data;
  while($data[] = mysql_fetch_row($dbresult)) /* nic uvnitř cyklu */;
  return($data);
}
…
$vysledek = mysql_query($sql);
$data = fetch_all($vysledek);
- takhle je to jedno volání funkce.
tomáš
Profil *
Joker:
ano, samozřejmě, ale mě nejde o složitost algoritmu (navíc mám vždycky tendenci věřit víc kódu zapouzdřenému v nějakém rozšíření víc než mému vlastnímu co se týká optimalizace, (ne)chybovitosti)... mě jde o to, abych já psal co nejmíň :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0