Svp les kheys j'aimerais faire une zone de recherche sur mon site web ou l'utilisateur pourrait rechercher un topic en fonction de son titre. En gros il tape un mot ou un morceau de phrase et ça affiche tous les topics qui ont un titre contenant le morceau de phrase qu'il a tapé...
J'ai utilisé la fonction SQL "Like %phrase%" mais ils me mettent une erreur lorsque je recherche une phrase avec une apostrophe par exemple...
Quelqu'un aurait un moyen svp ?? merci d'avance
Tu as les recherchevfull textes
ils me mettent une erreur lorsque je recherche une phrase avec une apostrophe par exemple...
Car tu injectes certainement la chaîne de recherche sans précaution. Bravo, tu as découvert une faille par injection SQL sur ton forum
Utilise des requêtes préparées et tu n'auras plus d'erreur avec ton apostrophe.
https://www.php.net/manual/fr/pdo.prepared-statements.php
Moi ce que je fais dans ces cas c'est que je change le caractère apostrophe par un code avant de le mettre dans la base de données.
Exemple :
Un topic qui s'appelle : "L'ascension" deviendra "L%%45%%ascension".
Et après pour afficher le nom à l'utilisateur je fais la conversion inverse, je change les "%%45%%" par un apostrophe.
On ne doit pas traiter le problème ce cette façon. C'est sans doute une des pires idées à mettre en œuvre.
Ouais j'avoue, la seule fois ou je l'ai fait c'était pas pour ce problème là, c'était pour créer un message codé et j'avais utilisé des séparateurs entre éléments du coup fallait pas que quelqu'un utilise ces séparateurs.
Sinon regarde ici ça peut t'aider : https://stackoverflow.com/questions/7600661/mysql-error-when-inserting-data-containing-apostrophes-single-quotes
Ils parlent de mysql_real_escape_string(), je l'ai jamais testé perso.
PDO est ton amis gros !