Pladsholdere kan ikke citeres. Så simpelt som det:
SELECT ... WHERE foo = ?
SELECT ... WHERE foo = '?'
Den første er en pladsholder og fungerer som forventet. Den anden tester for lighed i forhold til tegnet "spørgsmålstegn". Det er ikke længere en pladsholder.
Og så er der problemet med ?
er også et regex-metategn. Hvis pladsholdere KUNNE citeres, så givet
SELECT ... WHERE foo REGEXP '^.?'
ville det ?
være en forespørgselspladsholder, eller er det regex "nul-eller-en"-områdeoperatoren?
Hvis du vil bruge pladsholdere i regex, skal du "bygge" regex-mønsteret
SELECT ... WHERE foo REGEXP concat('^.', ?)
Præcis på samme måde som du skulle bygge en LIKE
mønster:
SELECT ... WHERE foo LIKE '%?%' // wrong
SELECT ... WHERE foo LIKE concat('%', ?, '%') // right