Je visite le site d'une entreprise qui vendait jadis de l'outillage automobile, et je tente une recherche pour voir s'ils ont toujours du stock. Il semblerait qu'ils en ont encore. En voyant le design très simple et fort peu soigné du site, je tente d'ajouter une apostrophe dans la barre de recherche… Et ça n'a pas raté :
SELECT COUNT(*) FROM <table> WHERE 1=1 AND ToolName LIKE '%test'%' db query failed.
En plus de ne pas échapper correctement les apostrophes, le « développeur » a jugé nécessaire de rajouter
WHERE 1=1
dans la requête. Double PEBKAC.
WHERE 1=1
peut être acceptable. Je prends le code suivant :Je me rend compte que la condition
champ1 = val1
est inutile. Je mets donc la ligne 3 en commentaire, et tout marche bien. Si cette ligne avait commencé par unWHERE
, la requête aurait été mal formée, et là, c'est le drame.Il peut aussi s'agir d'une requête crée par une boucle :
Et dans ce cas là mettre une première condition WHERE évite de devoir faire un truc du genre
Dans ce cas là, la lisibilité est légèrement réduite.
Conclusion : même si c'est à priori bizarre, le
WHERE 1=1
ne me dérange pas plus que ça.edit : j'ai gagné la médaille du commentaire le plus long ?