Database query, špatně vygenerovaný SQL příkaz

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

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)

japlavaren
Člen | 404
+
0
-

dopln za VALUES otaznik:
VALUES ?

jackm
Člen | 54
+
0
-

Doplněn, vymazán temp a chyba stále stejná.
Děkuji

David Matějka
Moderator | 6445
+
+1
-

zkus VALUES (?) nebo to, co je v dokumentaci – tedy assoc array

->query("INSERT INTO knihy", array(
	"nazev" => $nazev,
....
));
jackm
Člen | 54
+
0
-

matej21: Díky moc, toto řešení funguje, chyba byla u mě, špatně jsem to pochopil a snažil se Nette podstrčit takový „domácko“ sesmolený příkaz.

Ryky
Člen | 14
+
0
-

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ě :)