Nette databse query – select in

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

Zdravím,
prosím vás ako sa správne zapisuje výraz:

		$this->database->query('select * from position_reward where id in ?', [1,2]);  // zjednodušené

Mne to vyhodí error a vyprodukuje to takýto select:

select * from position_reward where id in 1, 2

Niekde som videl zápis

$this->database->query('select * from position_reward where id in (' . join(',', [1,2]) . ')');

ale to dúfam nieje skutočne riešenie.

Editoval Čamo (2. 9. 2016 23:11)

CZechBoY
Člen | 3608
+
0
-
$db->queryArgs('...  WHERE abc IN (?)', [[1,2,3,4,5]]);

Editoval CZechBoY (3. 9. 2016 8:11)

Čamo
Člen | 798
+
0
-

CZechBoY
Na to dvojúrovnové pole som nakoniec prišiel. Len mi to nejako nedáva zmysel.

CZechBoY
Člen | 3608
+
0
-

Dvojurovnovy pole?

Spectator
Člen | 48
+
0
-

Čamo napsal(a):

CZechBoY
Na to dvojúrovnové pole som nakoniec prišiel. Len mi to nejako nedáva zmysel.

Mno předáváš pole argumentů a jeden z nich (jediný) je opět pole

Čamo
Člen | 798
+
0
-

Sorry prehliadol som to queryArgs(). Pôvodná otázka bola na query(). Mne totiž fungovalo toto:

$this->database->query('select * from position_reward where id in ?', [[1,2]]);

čo je asi nejaká anomália(?). Keď som tam doplnil ešte tie zátvorky tak už to fungovalo normálne:

$this->database->query('select * from position_reward where id in (?)', [1,2]);

Díky.

CZechBoY
Člen | 3608
+
0
-

No v tomhle mam vzdycky problem.. Ve fluidnim where se zavorkyani zanoreny pole myslim nepise; naopak v queryArgs jsou zavorky kolem otazniku pri pouziti IN a jeste parametry jsou zabaleny v listu (pole, ktery ma indexy od 0 po pocet prvku, viz Nette\Utils\Arrays::isList)