database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29284 게시물 읽기
No. 29284
질문드립니다 쿼리 where 절
작성자
전종구(pouha)
작성일
2009-09-08 16:21ⓒ
2009-09-08 16:31ⓜ
조회수
5,796
idx        code                          gubun            swrite    wdate
992   0   dreamIVRFXSLSASN    no                  yes   0000-00-00 00:00:00 
993   0   dreamC46WMPOO8QL    no                  yes   0000-00-00 00:00:00 
994   0   dreamRDSSSHIOPQA    no                  yes   0000-00-00 00:00:00 
995   0   dreamOHNNBAAV2RT    no                  yes   0000-00-00 00:00:00 
996   0   dreamZQAF6I55SCB    no                  yes   0000-00-00 00:00:00 
997   0   dreamPCFUQ3HELYD    no                  yes   0000-00-00 00:00:00 
998   0   dream6FOAUBALKOT    no                  yes   0000-00-00 00:00:00 
999   0   dreamU57VU7MROEV    no                  yes   0000-00-00 00:00:00 
1000   0   dreamTBFHJDE7KJ4   no                  yes   0000-00-00 00:00:00 
1001   0   dreamIMAK25H3MUI   no                  yes   0000-00-00 00:00:00 

위와 같이 시리얼넘버를 저장한 테이블이 있으며 입력폼으로 발급된 시리얼음 입력받아서 해당시리얼 존재시 업데이트 되도록 프로그램
되어져 있습니다

쿼리 


 $ObjRec1=$mysql->select($table=$tableName, $where=" where code='$serial' and swrite='yes' and gubun='no' ", $field=" idx ", $flag=0);

 if(empty($ObjRec1[idx])) {


 echo "<noscript>alert('해당하는 코드가 존재하지 않습니다');history.back(-1);";
 exit; 



시리얼 넘버를 정확하게 입력하여도 어떤것은 제대로 인식해서 진행되고 어떤것은 해당코드가 존재하지 않는다고 나오네요 왜 그럴까요? 고수님들 부탁드려요 ㅜㅜ;

현재는 어쩔수 없이  code lkie '$serial%' 이렇게 처리 합니다만 정확한 처리가 아니라서요

이 글에 대한 댓글이 총 5건 있습니다.

안녕하세요 박성원입니다. 

흠.. 제가 보기엔 코드에 문제가 없을듯한데요 아무래도 몇가지 원인을 분류해보자면


1.직접 Query를 php에 뿌려서 확인하는 방법이 가장 좋을듯하네요 실제로 공백문제, 혹은 대소문자 문제 아니면 Syntex문제가 발생할 우려가 있으니 말이죠 ^^;;


2. 코드내의 문자열구분 
   문자가 대소문자의 조합으로 이루어져 있다면 구별이 필요합니다. 모두 대문자나 모두 소문자라면 특정 함수를 이용해서 php에서 사용자 입력값을 미리 대, 소문자료 변경해서 조회 하는 방법도 있구요
mysql에서 대소문자 구별은 아래의 사이트 글을 읽어보심이 도움이 되실듯합니다. 

http://sangmo.tistory.com/123





그럼 건승하시길..

박성원(darkancia)님이 2009-09-08 16:39에 작성한 댓글입니다.

폼으로 넘어온값은 이상없이 잘 찍힙니다 아무래도 대소문자가 합쳐져서 생긴 문제가 아닌가 하는 생각도 들긴하는데...

해결방법을 모르겠네요 ㅜㅜ

전종구(pouha)님이 2009-09-08 16:54에 작성한 댓글입니다.
이 댓글은 2009-09-08 17:33에 마지막으로 수정되었습니다.

폼으로 넘어온 값이 정상이라면 안될 이유가 없을듯한데요

혹시 가능하시다면 결과 쿼리를 보여주실 수 잇을까요?

박성원(darkancia)님이 2009-09-08 16:58에 작성한 댓글입니다.

우선 답변달아주셔서 감사합니다... 왠만하면 검색해서 알아보고 처라하는데 이건 해결하기힘드네요

부탁드릴게요 ㅜㅜ


where code='dreamU57VU7MROEV' and swrite='yes' and gubun='no' 



쿼리를 출력해서 나온 값입니다 코드값은 존재하구요 값은 이상없이 잘 넘어옵니다

문제는 값을 가져올때도 있고 그렇지 못할때도 있습니다.



해당하는 코드가 존재하지 않습니다 나올때도 있고 값을 인식해서 스크립트가 진행될때도 있습니다


물론  = 이콜이 아니라   code like '$serial%'   이면 모두 진행이 되구요



linux 에 php5.2.9 인데 이런경험을 처음이라 난감하네요 뭐 대소문자로 시리얼을 작업해본건 처음이지만....


전종구(pouha)님이 2009-09-08 17:16에 작성한 댓글입니다.
이 댓글은 2009-09-08 17:21에 마지막으로 수정되었습니다.

흠..

대략 난감한 경우인데 뒷부분을 like 검색으로 처리해서 나온다는것은 뒤에 공백이 잇을 가능성이 있습니다. 원래 Mysql의 특성상 뒷부분의 공백을 정한다해도 text와 char, varchar의 경우 뒷공백을 제거 한 값으로 조회가 되는것이 정상인데 먼가 문제가 있을지도 모르니 



where RTRIM(code)='dreamU57VU7MROEV' 으로 수정 후 조회를 해보시기 바랍니다. 

이보다 앞서 code 값의 길이가 일정하다면 length 함수로 길이를 먼저 뽑아 보심이 중요할듯합니다. 


select code, length(code) from table where length(code) > number



저도 이런경우는 첨보는것이라 여러가지로 해보긴 하는데 잘 안되네요 ;; 


박성원(darkancia)님이 2009-09-08 17:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29297여러테이블 연결해서 조회하는 쿼리문 문의 입니다. [1]
김선아
2009-09-10
5804
29286데이타를 원하는대로 출력하고 싶은데요.. 잘 안되서요 ㅜㅜ [1]
goooooo
2009-09-09
5307
29285procedure 한글입력문제 [3]
조원준
2009-09-09
8758
29284질문드립니다 쿼리 where 절 [5]
전종구
2009-09-08
5796
29283서브쿼리를 만들어봐야 겠는데 힘드네요 도와 주세요 [1]
술취한머슴
2009-09-08
5818
29282Foreign key update cascade의 모호성? [1]
강동화
2009-09-08
6165
29281데이터 삭제시 인덱스도 같이 삭제 되나요? [2]
김대청
2009-09-07
5738
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다