Problém s připojením k databázi a práce s ní
- Manny7
- Člen | 67
Ahoj,
zrovna řeším ukládání dat do databáze, ale data se neukládají –
nevím, zda je problém s modelem nebo s čím.
V Modelu mám nadefinovanou jednoduchou třídu:
class SqlManager
{
public function __construct()
{
$this->connection = dibi::getConnection();
}
public function findAll($table)
{
return $this->connection->select('*')->from($table);
}
public function createItem($array)
{
return dibi::query('INSERT INTO [items]', $array);
}
}
A v presenteru se snažím data zpracovat následovně:
public function renderDefault() //tohle mi zobrazuje data v pořádku
{
$sql = new \SqlManager;
$this->template->items= $sql->findAll('items')->orderBy('name');
}
public function processFormular(AppForm $form)
{
$sql = new \SqlManager;
$arrItems = array(
'item1' => $values['item1'],
'item2' => $values['item2'],
'item2' => $values['item3']
);
$sql->createItem($arrItems ); //tady už je problém, data se neukládají
}
Data v poli jsou správně… Nepřehlížím nebo neopomněl jsem nějakou důležitou věc? Díky
- Manny7
- Člen | 67
Tak už se mi to podařilo rozjet, ale popravdě – zatím moc nevím,
v čem byla chyba – zkusil jsem ten kod použít jinde a jde… po
přepsání funguje i u mně… divné
@Panda: posílání jsem upravil
@westrem: my fail… nazval jsem ty položky blbě –
do DB se ukládá jeden řádek, item1, item2, item3 byly atributu (sloupce)
toho řádku.. sorry za zmatení
@toka: hmm… tím to nebylo… ale doplnil jsem
Ale co mi vrtá hlavou:
1 – dá se nějak jednoudše vypsat přímo ten SQL dotaz, kde budu mít
přímo celý ten dotaz? Ne ve formě pole (obdoba print_r), ale klasicky
„INSERT INTO table SET a="retezecA“, b=44" např.? Případně i třeba
s errorem toho dotazu… nějak se mi to nepodařilo vyhledat
2 – zkusil jsem následující dotazy:
return dibi::insert('tabulka', $array); // tohle mi vypíše kompletní info tak, jak to dělá print_r() -- tzn. dostanu výpis pole, kde jsou informace o připojení k databází, prvky v poli apod.
return dibi::test('INSERT INTO [tabulka]', $array); // tohle mi neudělá vůbec nic
return dibi::query('INSERT INTO [tabulka]', $array); // tohle mi uloží řádek do DB
A co mi vrtá hlavou – není ta funkčnost insert() a test() nějak prohozená? …fungují totiž nějak divně, hlavně ten insert() že mi vypíše pole mi nejde moc do hlavy
Editoval Manny7 (23. 8. 2010 13:49)
- LuKo
- Člen | 116
Manny7 napsal(a):
Ale co mi vrtá hlavou:
1 – dá se nějak jednoudše vypsat přímo ten SQL dotaz, kde budu mít přímo celý ten dotaz? Ne ve formě pole (obdoba print_r), ale klasicky „INSERT INTO table SET a="retezecA“, b=44" např.? Případně i třeba s errorem toho dotazu… nějak se mi to nepodařilo vyhledat