Réponses
Trop de publicités?C’est généralement quand les gens accumulent des instructions SQL.
Lorsque vous ajoutez des `` vous n’avez pas à vous soucier de savoir s’il existe une condition avant ou juste lorsque. L’optimiseur doit l’ignorer
Pas de magie, juste pratique
Exemple de Code :
Dans le cas contraire, vous devrez disposer d’un ensemble complexe de logique :
1=1
sera toujours vrai, donc le value="TOYOTA"
bits est le plus important.
Vous obtenez ceci dans quelques scénarios, y compris:
SQL généré: Il est plus facile de créer un générer un complexe where
si vous n'avez pas à travailler si vous êtes en train d'ajouter la condition première ou pas, si souvent un 1=1
est à mettre au début, et toutes les autres conditions peuvent être ajoutées avec un And
Débogage: Parfois, vous voyez les gens mettent en 1=1
au sommet d'une condition where, comme il leur permet de librement hacher et changer le reste des conditions lors du débogage d'une requête. par exemple
select * from car_table
where 1=1
--and value="TOYOTA"
AND color="BLUE"
--AND wheels=4
Il faut dire qu'il n'est pas particulièrement bonnes pratiques et, normalement, ne devrait pas se produire dans le code de production. Il peut même ne pas aider à l'optimisation de la requête beaucoup.
Ainsi que toutes les autres réponses, c’est une technique simple pour les attaques par injection SQL. Si vous ajoutez un `` déclaration pour certains codes SQL, alors il va retourner tous les résultats en raison de la truthiness inhérente de l’expression.