Jak dostat array z DB selectu v podobě $gids=[1,2,3,4]

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
AZJOL
Člen | 34
+
0
-

Zdravím, potřeboval bych dostat pole z výsledku jetí v databázi, aby výsledek vypadal nějak takto:

$gids=[1,2,3,4,5];

$gids=$this->database->query("SELECT C_ID FROM CGROUPD WHERE GROUP_ID=$id");

Děkuji všem za odpověď.

uncanny
Člen | 19
+
0
-

Píšu z hlavy a možná ti někdo poradí lépe, ale chybí ti tam fetchAll():

$rows = $this -> database -> query ( "SELECT C_ID FROM CGROUPD WHERE GROUP_ID=$id" ) -> fetchAll();

a pak přes foreach:

foreach ( $rows as $row )
	$gids[] = $row -> C_ID;

Editoval uncanny (31. 3. 2017 10:49)

David Matějka
Moderator | 6445
+
+1
-

Pro jednoduche pripady jako tento staci fetchPairs, v tomhle pripade bude stacit i bez parametru, jelikoz tam mas jen jeden sloupecek

->query(...)->fetchPairs()

pro prevedeni do komplikovanejsich struktur pak muzes pouzit fetchAssoc .. zdokumentovane to sice afaik neni, ale muzes kouknout do testu

v tomhle pripade by to bylo proste

->query(...)->fetchAssoc("C_ID")

@uncanny fetchAll neni potreba, resultset je iterable. ale jinak je foreach samozrejme take legitimni reseni :)

AZJOL
Člen | 34
+
0
-

Jak píše David: fetchAll() není potřeba, ale foreach funguje krásně.

Nevěděl jsem, že lze použít fetchPairs či fetchAssoc i v případě jednoho selectovaného sloupce, to je úplně nejčistší a nejkratší varianta.

Díky oboum kluci!!

Editoval AZJOL (31. 3. 2017 11:19)

uncanny
Člen | 19
+
0
-

David Matějka napsal(a):

@uncanny fetchAll neni potreba, resultset je iterable. ale jinak je foreach samozrejme take legitimni reseni :)

My bad. Zas jsem se něčemu přiučil.