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

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

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

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,666 | RSS
QA 내용 검색

회원로그인

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