SQL Insert error – preprocess

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

Tento kód hází chybu v SqlPreprocess:180 (Warning – Invalid argument supplied for foreach())
Z nějakého důvodu to očekává array v arrayi. To mi nepřipadá normální.
Neví někdo, co je špatně?
Ocením každou radu. :)

		$username = $values["username"];
$email = $values["email"];
$password = Nette\Security\Passwords::hash($values["password_1"]);
$result = $this->getConnection()->query("INSERT INTO user ('username','email','password') VALUES(?,?,?)", array($username, $email, $password));

Editoval 2bad2furious (25. 7. 2017 16:04)

2bad2furious
Člen | 26
+
0
-

Parametry se z nějákého důvodu nemají posílat jako array. – Vyřešeno

David Matějka
Moderator | 6445
+
0
-

mimochodem, muzes to napsat snadneji

2bad2furious
Člen | 26
+
0
-

Děkuji, jsem zvyklý ze svého staršího projektu na (sql, parametry). Toto řešení je příjemnější. Jenom dotaz, co se stalo s touto syntaxí? Zahlédl jsem jí ve starších dotazech.

$db->insert()->table()....

Editoval 2bad2furious (25. 7. 2017 16:46)

matopeto
Člen | 395
+
0
-

2bad2furious napsal(a):

Děkuji, jsem zvyklý ze svého staršího projektu na (sql, parametry). Toto řešení je příjemnější. Jenom dotaz, co se stalo s touto syntaxí? Zahlédl jsem jí ve starších dotazech.

$db->insert()->table()....

to funguje

$context->table("tabulka")->insert(['col1' => 'value1', 'col2' => 'value2'])

Vid: https://doc.nette.org/…ase/explorer

Editoval matopeto (25. 7. 2017 17:17)

CZechBoY
Člen | 3608
+
0
-

Místo query bys musel použít queryArgs.