Platzhalter können nicht zitiert werden. Ganz einfach:
SELECT ... WHERE foo = ?
SELECT ... WHERE foo = '?'
Der erste ist ein Platzhalter und funktioniert wie erwartet. Der andere testet auf Gleichheit gegen das Zeichen "Fragezeichen". Es ist kein Platzhalter mehr.
Und dann ist da noch das Problem ?
auch ein Regex-Metazeichen sein. Wenn Platzhalter zitiert werden KÖNNTEN, dann angegeben
SELECT ... WHERE foo REGEXP '^.?'
wäre das ?
ein Abfrageplatzhalter sein, oder ist es der Regex-Operator "Null oder Eins"?
Wenn Sie Platzhalter in Regexen verwenden möchten, müssen Sie das Regex-Muster "bauen"
SELECT ... WHERE foo REGEXP concat('^.', ?)
Genauso wie Sie ein LIKE
erstellen müssten Muster:
SELECT ... WHERE foo LIKE '%?%' // wrong
SELECT ... WHERE foo LIKE concat('%', ?, '%') // right