php 문자셋 varchar 한글비교시 2자만인식됨니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
php 문자셋 varchar 한글비교시 2자만인식됨니다.

QA

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);

 

하셔서 결과 값을 먼저 확인하세요.

무슨 말씀이신지 잘 이해가안되는데

일단 문자열의 경우에는 int로 사용하시면 안되시고

문자열 필드는 varchar(255)로 보통 많이들 사용하시구요

이름을 비교하는 쿼리를 어떻게 하셨는지 예시가 필요합니다.

실제 데이터가 A, B 각각의 필드에 '홍길동' 이라고 데이터가 있다면

검색이 되야 맞습니다.

데이터안의 내용이 '홍길동' 이렇게 단일 값이 아니라

'홍길동2' 'a홍길동' 이런식의 이름이라면 like 로 검색 조건을 다르게 하셔야합니다.

//g5멤버 테이블
$sql5 = ("select mb_signature,mb_hp,mb_profile from {$g5['member_table']} where mb_id = '{$sql222['mb_id']}' ");
$sql25= sql_query($sql5);
$sql225 = sql_fetch_array($sql25);

$query8 = 'update T_InShop_Point
set WinP=WinP+\''.$sql222['bokgo_Money'].'\'
Where \''.$sql222['name'].'\'= \''.$sql225['mb_profile'].'\' ';
$rg8 = mssql_query($query8);
 
이렇게 했습니다.

열에 이름을 길동=길동 하니 되고요
이름을 3글자 길동이 =길동이  홍길동=홍길동
이런식으로 2글자 넘으면 안되네요 ..

utf-8 이고요 이름을 2자로 하면 적용됨니다. 3글자 넘어서는 안되고요
varchar(255) 이고요


$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 필드명=값 으로 대상을 지정하는데,

길동=길동, 길동이=길동이, 홍길동=홍길동 처럼 비교하면 뭔 의미가 있나 싶군요.

name 열에 한글2자  예)길동
mb_profile 열에 한글2자 예)길동
이 있을시
mssql 테이블 T_InShop_Point 열 WinP에 업데이트 입니다.
위에
name 열에 한글3자가 있을시 예)홍길동
mb_profile 열에 한글3자가 있을시 예)홍길동
이렇게 3글자면
업데이트가 안되는 오류 입니다.

쿼리문을 만들때 다음처럼 하면 될텐데 일부러 복잡하게 만드는 모양새군요  ㅋ

$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시킨다는 말인가요?

말이 안되는 구문이니 실행이 될리가 없어요

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT