php 문자셋 varchar 한글비교시 2자만인식됨니다.
본문
각각 다른 테이블열에 있는 한글 이름을 비교 하는데
A테이블 열에 홍길동 과 B테이블에 홍길동이 같을시
업데이트 구문 입니다.
길동 길동은 인식이 되는데
홍길동 홍길동 3글자는 인식이 안됨니다.
열타입 varchar (20) 이고요 varchar (255) 도 해밨는데 동일합니다..
혹시 몰라서 int 로 변경하니 5글자까지 인식되는데
int는 그후 숫자0으로 변경되어버리네요..
열타입 text 로 2글자까지만 인식됨니다.
3글짜 이상 되게 할수 없을까요 ?
답변 6
쪽지 사용이 안 되어서...
update T_Point set Point=Point+'' Where AccountID = '' and ''=''
query문이 이렇게 나온 거라면
$query8 = 'update T_InShop_Point
set WinP=WinP+\''.$sql222['bokgo_Money'].'\'
Where \''.$sql222['name'].'\'= \''.$sql225['mb_profile'].'\' ';
$rg8 = mssql_query($query8);
여기서
$sql222,$sql225 query 결과가 제대로 나오지 않은 듯합니다.
각각 query문 실행 다음에
print_r( $sql222);
print_r( $sql225);
하셔서 결과 값을 먼저 확인하세요.
1. db에 데이터가 제대로 들어갔는지 채크.
2. 업데이트 구문 확인.
3. 업데이트시 캐릭터셋 확인.
무슨 말씀이신지 잘 이해가안되는데
일단 문자열의 경우에는 int로 사용하시면 안되시고
문자열 필드는 varchar(255)로 보통 많이들 사용하시구요
이름을 비교하는 쿼리를 어떻게 하셨는지 예시가 필요합니다.
실제 데이터가 A, B 각각의 필드에 '홍길동' 이라고 데이터가 있다면
검색이 되야 맞습니다.
데이터안의 내용이 '홍길동' 이렇게 단일 값이 아니라
'홍길동2' 'a홍길동' 이런식의 이름이라면 like 로 검색 조건을 다르게 하셔야합니다.
$query8 = 'update T_InShop_Point
set WinP=WinP+\''.$sql222['bokgo_Money'].'\'
Where \''.$sql222['name'].'\'= \''.$sql225['mb_profile'].'\' ';
$rg8 = mssql_query($query8);
이 중에서 Where \''.$sql222['name'].'\'= \''.$sql225['mb_profile'].'\' '; 부분에서
Where 필드명=값 으로 대상을 지정하는데,
길동=길동, 길동이=길동이, 홍길동=홍길동 처럼 비교하면 뭔 의미가 있나 싶군요.
!-->쿼리문을 만들때 다음처럼 하면 될텐데 일부러 복잡하게 만드는 모양새군요 ㅋ
$query8 ="update T_InShop_Point
set WinP=WinP+ '{$sql222['bokgo_Money']}'
Where '{$sql222['name']}' = '{$sql225['mb_profile']}' ";
그런데 이 쿼리문이 where절이 도대체 성립하는 구문이 아닙니다
아래처럼 필드명이 나오고 문자열과 같은지 비교를 해야하는데....
Where mb_profile = '{$sql225['mb_profile']}' ";
두개의 문자열이 같으면 어느 레코드를 update시킨다는 말인가요?
말이 안되는 구문이니 실행이 될리가 없어요
프로필에 있는 한글을 못읽어 드리는 문제네요 .
mb_profile 에 한글이 있으면 못읽어 드리네요