Database query, špatně vygenerovaný SQL příkaz
- jackm
- Člen | 54
Zdravím,
v konstruktoru třídy HomePage Presenter si vytvářím
Nette\Database\Context.
Dle tohoto jsem si napsal svůj SQL dotaz
$this->database->query('INSERT INTO knihy(id, typ_smeny, nazev, datum_pridani, prodejce, cena, popisek, telefon, email) VALUES ', array(0, $typ_smeny, $nazev, $date, $prodejce, $cena, $popisek, $telefon, $email));
$this->database->query('INSERT INTO knihy(id, typ_smeny, nazev, datum_pridani, prodejce, cena, popisek, telefon, email)', array(0, $typ_smeny, $nazev, $date, $prodejce, $cena, $popisek, $telefon, $email));
(také nevezme změna příkazu bez VALUES, jako v Dokumentaci.)
Nicméně nastává chyba v SQL syntaxi příkazu, podle mě tam není doplněn středník, který by tam ale měl Nette sám doplnit.
PDOException #42000
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚0, 'p‘, ‚fd‘, ‚2014–11–09 10:51:16‘, ‚dfd‘, ‚dfd‘, ‚dfd‘, , 'dfd at line 1
Vygenerovaný SQL dotaz s fiktivními hodnotami: INSERT INTO
knihy(id, typ_smeny, nazev, datum_pridani, prodejce, cena, popisek, telefon,
email)
VALUES 0, ‚p‘, ‚fd‘, ‚2014–11–09 10:51:16‘, ‚dfd‘,
‚dfd‘, ‚dfd‘, '', ‚dfd‘
Děkuji za rady
PS: Chtěl jsem se optat na Jabberu Nette, ale vždy po přihlášení (zkoušel
jsme i několik nicků, aby nebyl konflikt s existujícím přihlášeným
jménem) a vždy to
napíše: Chyba » forbidden (auth) - Byl jste vyloučen z této místnosti
Nette 2.2.3
Editoval jackm (9. 11. 2014 10:58)
- David Matějka
- Moderator | 6445
zkus VALUES (?)
nebo to, co je v dokumentaci – tedy
assoc array
->query("INSERT INTO knihy", array(
"nazev" => $nazev,
....
));
- Ryky
- Člen | 14
jenom tak pro info..
nebylo by lepší si hodnoty připravit v asociativním poli a pak jen
udělat toto?
public function pridatKnihu($values)
{
$poleHodnot = pripravHodnoty($values);
return $this->connection->table('knihy')->insert($poleHodnot);
}
btw používej DI a v constructoru si vytáhni connection
a netahat data z contextu je to blbost podle mě :)