Jak správně předat hodnotu do SQL funkce?
- Eda
- Backer | 220
Zdarec.
Netušíte někdo, jak správně pomocí NDB Exploreru zapsat tohle?
...
WHERE (SUBSTRING(TRIM(TRAILING '?' FROM `outOfRegister`), -4) <= '1996')
...
Jde o to, že když to zkusím takto:
$selection->where(
'(SUBSTRING(TRIM(TRAILING ? FROM outOfRegister), -4) <= ?)',
new SqlLiteral('?'),
'1996'
);
Nebo třeba takto:
$selection->where(
'(SUBSTRING(TRIM(TRAILING ? FROM outOfRegister), -4) <= ?)',
'?',
'1996'
);
…nezachová se to tak, jak bych očekával. První případ skončí chybou
There are more placeholders than passed parameters
. Druhý pak
vygeneruje dotaz špatně a spadne to při jeho exekuci – dá se tam
přebytečné rovnítko a vypadá to pak takto:
((SUBSTRING(TRIM(TRAILING = '?' FROM `outOfRegister`), -4) <= '1996'))
Díky za případné tipy a tríčky, už úplně nestačím sledovat všechny aktuální postupy, tak mi možná něco uteklo :-)
Editoval Eda (16. 11. 2021 0:24)
- Kamil Valenta
- Člen | 820
$selection->where(
'(SUBSTRING(TRIM(TRAILING ? FROM outOfRegister), -4) <= ?)',
new SqlLiteral('\'?\''),
'1996'
);
- Eda
- Backer | 220
@KamilValenta Díky, ale ani to bohužel nefunguje.
Nicméně ještě jsem dál experimentoval a došel jsem k tomuto a to, zdá se, funguje tak, jak potřebuju. Takže díky za inspiraci.
$selection->where(
'(SUBSTRING(TRIM(TRAILING ? FROM outOfRegister), -4) <= ?)',
new SqlLiteral('?', ['?']),
'1996'
);
Editoval Eda (16. 11. 2021 9:54)
- Kamil Valenta
- Člen | 820
To je zvláštní, já jsem to před odesláním otestoval a fungovalo to. Ale nemám nejnovější verzi, tak možná nějaká změna…