sql >> Databasteknik >  >> RDS >> Mysql

Vad är det bästa sättet att undvika användarinmatning för reguljära uttryck i MySQL?

AFAIK, det finns inget naturligt sätt att fly för MySQL regex. Du kan göra det i PHP med preg_quote (http://www.php.net/manual/en/function.preg-quote.php) som förmodligen skulle göra jobbet åt dig, men uppenbarligen inte är designat för ändamålet.

Mitt föredragna sätt om jag var i din situation skulle vara att konstruera en regex-vitlista i PHP som du sedan kan tillämpa på din farliga sträng:

$safeString = preg_replace('/[^\w]/','',$dangerousString);

Detta tar bort alla icke-ordstecken (dvs allt utom A-Za-z0-9_) från din sträng.

OBS! Jag tror att de andra svaren inte kommer att ta bort/undkomma regex specialtecken, vilket jag tror är ditt krav.



  1. INT vs Unique-Identifier för ID-fält i databasen

  2. Hur man konsekvent tjänar en Microsoft Access MVP Award

  3. Generera en uppsättning eller sekvens utan loopar – del 2

  4. Split-funktion i SQL Server 2008