Dotaz SHOW TABLES nad databází
- James
- Člen | 54
Zdravím,
potřebuji provést dotaz SHOW TABLES
nad databází, ale
z databáze se mi vypíše vždy pouze první tabulka, potřeboval bych nějak
získat, nejlépe do pole obsah všech tabulek v databázi. Nevěděl by někdo
jak tento můj kód modifikovat, nebo případně zvolit jiný postup?
Díky za radu
<?php
public function showTables()
{
return $this->connection->query('SHOW TABLES')->fetch();
}
?>
- James
- Člen | 54
fetchAll() nad dotazem mi po vypsaní pomocí var_dump vrací objekt, potřeboval bych názvy tabulek dostat do pole, se kterým by se nechalo dál pracovat
array(3) {
[0]⇒ object(Nette\Database\Row)#122 (1) { [„Tables_in_quickstart“]⇒
string(4) „list“ }
[1]⇒ object(Nette\Database\Row)#119 (1) { [„Tables_in_quickstart“]⇒
string(4) „task“ }
[2]⇒ object(Nette\Database\Row)#121 (1) { [„Tables_in_quickstart“]⇒
string(4) „user“ }
}
Editoval James (13. 3. 2013 9:58)
- Jan Mikeš
- Člen | 771
fetchAll() ti vraci pole objektu, kdezto fetchPairs() ti vraci v zavislosti na parametrech bud primo pole s hodnotami, nebo bez uvedeni druheho parametru pole radku stejne jako v pripade fetchAll()
EDIT do tretice:
fetchPairs()
fetchAll()
Editoval Lexi (13. 3. 2013 11:36)
- castamir
- Člen | 629
@James fetchAll() ti převede všechny nalezené řádky do pole, kde každý prvek reprezentuje jeden řádek. Každý řádek je v tomto případě instance třídy Nette\Database\Row a obsahuje hodnoty daného řádku.
fetchPairs ti vytvoří jednoduché asociativní pole dle výsledků. Nad
Nette\Database\Statement můžeš použít fetchPairs pouze nad výsledkem, jež
sám o sobě obsahuje 2 sloupce. Výsledné asociativní pole pak bude mít
strukturu 1. sloupec => 2. sloupec
Editoval castamir (13. 3. 2013 10:39)
- castamir
- Člen | 629
@Lexi Hledáš na špatném místě. query vrací instanci Nette\Database\Statement. A API Statementu už hledané metody má.
- castamir
- Člen | 629
@Lexi všechno špatně. Odkazuješ na Connection ne na Statement. Ty metody jsou v obou třídách různé, mají různé parametry i chování!
Pro jistotu ještě jednou zopakuju řešení:
$originalData = $this->connection->query("show full tables")->fetchPairs();
array_keys($originalData); // vraci pole nazvu tabulek
Solved, close?
Editoval castamir (13. 3. 2013 11:34)