가장 직접적인 측면에서 이들 간의 차이점은 다음과 같습니다. #은 데이터에 큰따옴표를 추가하는 것과 동일하고, $는 데이터를 직접 표시하는 것과 같습니다.
1. # 들어오는 매개변수를 문자열로 처리합니다. 즉, 사전 컴파일됩니다
select * from user where name = #{name}
예를 들어 csdn을 전달하면
select * from user where name = 'csdn'
2가 됩니다.
select * from user where name=${name}
예를 들어 csdn을 착용하면
select * from user where name=csdn
3이 전달됩니다. #의 장점은 SQL 삽입을 크게 방지할 수 있다는 것이지만 $는 그렇지 않습니다.
예: 사용자가 로그인 작업을 수행하고 백그라운드 SQL 확인 스타일은 다음과 같습니다.
select * from user where username=#{name} and password = #{pwd}
프런트 데스크에서 전송된 사용자 이름이 "wang"이고 비밀번호가 "1 또는 1=1"인 경우 #을 사용합니다. sql이 Injection이 나타나는 것을 방지하기 위해 $방식으로 변경하면 sql문이
select * from user where username=wang and password = 1 or 1=1
가 됩니다. 이 경우 sql인젝션이 형성됩니다.
4. MyBatis 정렬 시 동적 매개변수로 정렬을 사용할 경우 # 대신 $를 사용하는 것에 주의해야 합니다.
추천 튜토리얼: mysql 튜토리얼
위 내용은 #과 $의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!