2010-05-11 4 views
1

J'ai besoin de toutes les lignes dans quel domaine eventname contient ce texte (y compris guillemet simple)MySql Interrogation aide concernant le texte trouver

's Birthday 

J'ai essayé, mais il donne l'erreur:

select * from fab_scheduler where eventname like '%\'s Birthday%' 

Comment puis-je construire une telle requête?

Merci

+0

En regardant votre nom d'utilisateur, je peux dire que mysql_real_escape_string (voir ma réponse ci-dessous) est également disponible en PHP: http://www.php.net/manual/fr/function.mysql-real-escape -string.php :-) – Jon

+0

@Jon: Oui, vous avez raison, j'ai complètement oublié ça ... merci quand même. –

Répondre

1

Si vous avez l'intention d'inclure « s dans votre SQL, vous devez escape il:

There are several ways to include quote characters within a string:

  • A “'” inside a string quoted with “'” may be written as “''”.
  • A “"” inside a string quoted with “"” may be written as “""”
  • Precede the quote character by an escape character (“\”)
  • A “'” inside a string quoted with “"” needs no special treatment and need not be doubled or escaped. In the same way, “"” inside a string quoted with “'” needs no special treatment.

De plus, si vous construisez le SQL dans un programme, vous devriez sérieusement envisager échapper des variables qui vont dans les requêtes SQL en utilisant mysql_real_escape_string ou son équivalent dans votre langage de programmation. Ne pas le faire rendra votre application vulnérable aux attaques par injection SQL par quiconque contrôle la source de données pour ces variables (probablement vos utilisateurs, gardez à l'esprit que "vos utilisateurs" peut signifier "l'Internet entier" selon les circonstances).

Editer: Indiqué les instructions dev.mysql.com ci-dessus.

1

Soit utiliser des guillemets doubles, ou échapper à la citation unique.

select * from fab_scheduler where eventname like "%'s Birthday%" 

select * from fab_scheduler where eventname like '%''s Birthday%' 
0
select * from fab_scheduler where eventname like "%'s Birthday%"