Maison  >  Article  >  base de données  >  La différence entre # et $

La différence entre # et $

王林
王林original
2019-10-25 17:15:0722584parcourir

La différence entre # et $

La différence entre eux dans les termes les plus directs est la suivante : # équivaut à ajouter des guillemets doubles aux données, $ équivaut à afficher directement les données.

1. #Traitez les paramètres entrants comme des chaînes, c'est-à-dire qu'ils précompileront

select * from user where name = #{name}

Par exemple, si je passe un csdn, alors ce sera

select * from user where name = 'csdn'

2 , $ ne précompilera pas la valeur entrante

select * from user where name=${name}

Par exemple, si je porte un csdn, alors la valeur transmise sera

select * from user where name=csdn

3. L'avantage de # est qu'il peut empêcher l'injection SQL. , mais pas $.

Par exemple : l'utilisateur effectue une opération de connexion et le style de vérification SQL en arrière-plan est :

select * from user where username=#{name} and password = #{pwd}

Si le nom d'utilisateur transmis depuis la réception est "wang" et le mot de passe est "1 ou 1=1", utilisez Si vous utilisez la méthode #, il n'y aura pas d'injection SQL. Si vous passez à la méthode $, l'instruction SQL deviendra

select * from user where username=wang and password = 1 or 1=1

. Dans ce cas, l'injection SQL sera formé.

4. Lorsque vous utilisez l'ordre par paramètres dynamiques lors du tri de MyBatis, vous devez faire attention à l'utilisation de $ au lieu de #.

Tutoriel recommandé : Tutoriel mysql

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn