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!