/ / Comment utiliser dot comme ponctuation et ne pas ajouter en PHP - php, mysql

Comment utiliser les points comme dans la ponctuation et ne pas les ajouter en PHP - php, mysql

Je suis en train de rassembler une requête SQL en PHP. Comment déclarer un point en ponctuation?

Exemple de code à la demande:

$sql="SELECT COUNT(*) FROM Table1 WHERE LOWER(location2) REGEXP ".* .$location .*"";

Voir .* est une expression rationnelle et ne doit pas être interprétée par PHP comme une concaténation.

Réponses:

0 pour la réponse № 1

Cela n'a rien à voir avec la syntaxe PHP. Votre exemple contient un . dans une chaîne entre guillemets, que PHP interprète comme . à l'intérieur d'une chaîne citée. Donc rien ne va pas là-bas.

Ce que vous vivez probablement, c’est que MySQL traite les . en tant qu'opérateur générique dans une expression régulière. En syntaxe d'expression régulière (que ce soit en MySQL, PHP, Perl, où que vous soyez) . est un joker qui correspond à n'importe quel caractère. Si vous voulez inclure un littéral . dans votre regex, vous devez y échapper, c'est-à-dire ..

Parce que vous l'utilisez dans une chaîne à l'intérieur d'une chaîne, vous devez également échapper à la caractère de sorte qu'il passe à la regex correctement. Sans test, je dirais qu'il doit s'échapper deux fois (une fois pour PHP et une fois pour MySQL), par exemple. ""\\."" en PHP devient "\." en MySQL, devient . dans l'expression régulière.

(Évidemment, n'échappez que le . caractères qui sont censés être traités littéralement - je suppose que le .* est destiné à correspondre à n'importe quel caractère - ceux-ci ne devraient pas être changés.)