Tijdelijke aanduidingen kunnen niet worden aangehaald. Zo simpel:
SELECT ... WHERE foo = ?
SELECT ... WHERE foo = '?'
De eerste is een tijdelijke aanduiding en werkt zoals verwacht. De andere test op gelijkheid met het teken "vraagteken". Het is geen tijdelijke aanduiding meer.
En dan is er nog het probleem van ?
ook een regex-metakarakter zijn. Als tijdelijke aanduidingen KUNNEN worden geciteerd, dan gegeven
SELECT ... WHERE foo REGEXP '^.?'
zou dat ?
een tijdelijke aanduiding voor zoekopdrachten zijn, of is het de regex "nul-of-één" bereikoperator?
Als u tijdelijke aanduidingen in regexen wilt gebruiken, moet u het regex-patroon "bouwen"
SELECT ... WHERE foo REGEXP concat('^.', ?)
Precies zoals je een LIKE
. zou moeten bouwen patroon:
SELECT ... WHERE foo LIKE '%?%' // wrong
SELECT ... WHERE foo LIKE concat('%', ?, '%') // right