Nette\Database vnořený dotaz
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Fyasko
- Člen | 106
Ahoj, opět jsem narazil na menší problém.. Nerad bych používal dotazy tipu
$this->database->query('SELECT * FROM entries WHERE posted>=(SELECT log_time FROM users WHERE nickname="'.$value.'")')
Funguje, ale sqlinjection :) Zkoušel jsem něco jako
$where = $this->database->table('users')->select('log_time')->where('nickname', $value);
$this->database->table('entries')->select('*')->where('posted'>= $where)->order('posted DESC');
ale neúspěšně. Mohl by mi prosím někdo naznačit proč ne, a kde je vlastně chyba? :)
- James_Scott
- Člen | 55
$table->where("field", $conn->table($tableName))
field IN (SELECT $primary FROM $tableName)
$table->where("field", $conn->table($tableName)->select('col'))
field IN (SELECT col FROM $tableName)
- David Matějka
- Moderator | 6445
V NDB vzdy pouzivej placeholery
$this->database->query('SELECT * FROM entries WHERE posted>=(SELECT log_time FROM users WHERE nickname= ?)', $value);
v NDBT se subquery moc nepochodis – v mysql nejsou podporovane. musis to tedy resit dvema dotazy
Editoval matej21 (10. 8. 2014 21:48)