sql >> Database teknologi >  >> RDS >> Mysql

Hvad er den bedste måde at undslippe brugerinput til regulære udtryk i MySQL?

AFAIK, der er ingen indbygget måde at undslippe for MySQL regex. Du kan gøre det i PHP med preg_quote (http://www.php.net/manual/en/function.preg-quote.php), som sandsynligvis ville gøre arbejdet for dig, men som åbenbart ikke er designet til formålet.

Min foretrukne måde, hvis jeg var i din situation, ville være at konstruere en hvidliste med regex i PHP, som du derefter kan anvende på din farlige streng:

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

Dette fjerner alle ikke-ord-tegn (dvs. alt undtagen A-Za-z0-9_) fra din streng.

NB, jeg tror, ​​at de andre svar ikke vil fjerne/undslippe regex-specialtegn, hvilket jeg mener er dit krav.



  1. Top 5 PostgreSQL-forespørgselsovervågningsværktøjer

  2. Oracle:hvad er situationen for at bruge RAISE_APPLICATION_ERROR?

  3. mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:Antallet af variabler matcher ikke antallet af parametre

  4. Tabel som argument for en PostgreSQL-funktion