PDO pojmenované parametry v dev verzi Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
looky
Člen | 99
+
0
-
<?php
//funguje normálně
$connection->queryArgs('SELECT ?', array('TEST'));

//Notice: undefined offset v SQL preprocessoru
$connection->queryArgs('SELECT :test', array('test' => 'TEST'));
?>

To asi nebude záměr, co?

David Matějka
Moderator | 6445
+
0
-

ano, pojmenovane parametry nejsou podporovane zamerne..

looky
Člen | 99
+
0
-

Hmm, a mohl by jsi to nějak rozvést? Jaký to byl záměr? Nerad bych přetěžoval SqlPreprocessor a následně narazil na problém, který už někdo řešil (..a rozhodl se ho neřešit..)

David Matějka
Moderator | 6445
+
0
-

technicky to problem neni, proste se rozhodlo, ze ta podpora nebude :) uz jsem mel otevren pull request, ale neprosel, pokud se nic nezmenilo, tak staci tahle uprava

edit: respektive ja jsem navrhoval i podporu named paramtru i do selection; podpora pouze v Connection::queryArgs() by mozna projit mohla, pockame na hracha, jak se k tomu vyjadri :)

Editoval matej21 (10. 9. 2013 16:43)

looky
Člen | 99
+
0
-

No vlastně, že druhý případ vyvolá undefined offset, to mi ještě dává smysl. Nicméně

<?php
$connection->queryArgs("SELECT :test", array(array('test' => 'TEST')));
?>

by možná procházet mělo..

Editoval looky (10. 9. 2013 17:30)

hrach
Člen | 1844
+
0
-

osobne si nepamatuji, ze bych k tomu zaujimal stanovisko. vecme proti tomu moc nemam, ale pridanou hodnotu v tom moc nevidim, takze to neplanuji implementovat.

looky
Člen | 99
+
0
-

Ani když hezky poprosím? A založím issue ?

AaAAb
Člen | 6
+
+2
-

Také se přimlouvám k přidání téhle funkcionality. Nette Database je mocný nástroj, ale ne vždy si v projektech vystačíme s prostým načtením „joinovaných tabulek“ a potřebujeme dělat pokročilejší dotazy, statistiky a reporty, k tomu používáme přímo sql.

Bindované pojmenované parametry v pdo poskytují u rozsháhlých sql daleko lepší čitelnost při zachování bezpečného ošetřených hodnot. Parametry pro „otázníky“ se nám nejednou zpřeházely.