SQL dotaz WHERE IN proskenuje všechny tabulky a vrátí chybu, v phpmyadmin projde

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

Dobrý večer, mám jednoduchý dotaz do DB:

	$this->database->table('posts')
	->where("nazev IN ($finalQuery)");

(nemůžu escapovat kvůli apostrofům a ani to není třeba, data jsou natažena interně z db)

kde $finalQuery = "'a','b','c','d','e'";

Chyba je: No reference found for $posts->a.

Tracy v rámci toho dotazu zobrazuje všemožné dotazy typu:

SHOW FULL TABLES
SHOW FULL COLUMNS FROM `table`
SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IS NOT NULL AND TABLE_NAME = 'table'

A to pro každou tabulku.

Nikdy jsem se s tím nesetkal a SQL dotaz v phpmyadmin projde v pořádku. Netušíte, kde by mohl být zakopaný pes?

Editoval nettolog (7. 6. 2015 0:15)

nettolog
Člen | 68
+
0
-

Tak nevím, kde může být problém, ale vyřešil jsem to takhle:

$this->database->query('SELECT * FROM posts WHERE nazev IN ('.$finalQuery.')');
David Matějka
Moderator | 6445
+
+1
-

a nemuzes proste pouzit:

->where('nazev', array('a', 'b', 'c'))

?

nettolog
Člen | 68
+
0
-

To je feature nette nebo by to prošlo i v čistém PDO? Nikdy jsem o téhle možnosti neslyšel, na fórech doporučují array převést na string oddělený čárkami a pak se jen dotazovat na WHERE IN (string).

Díky tedy, budu to muset vyzkoušet, je to pro mě opravdu novinka. :)

Editoval nettolog (8. 6. 2015 0:39)