2012-11-01 1 views
0

여기에 약간의 상황이 있습니다. 내 "세션"테이블에서 내 데이터베이스에서 나는 아래의 데이터가있는 경우 경우 다음문자열이 데이터베이스에 있고 끝에 숫자가있는 경우 문자열 생성을 원하지 않음

SessionId 

C 

을 어떻게 내 코드를 발생하는 것은 이미 그대로 사용자가 새로운 캐릭터를 생성 할 때 위의 문자열을 표시하지 않을 것입니다 데이터베이스에. 이

의 I 그래도이 문제가 위의 예에서 잘 작동하는 나는 다음 데이터베이스에 아래와 같은 문자열을 표시합니다 아래의 데이터베이스에 여러 세션 (시험)이있는 경우 :

SessionId 

C1 
C2 
C3 

을 위의 3 가지 시험입니다. 그러나 문제는 문자열 "ADERF"가 여전히 아래 코드에서 생성 될 수 있다는 것입니다. 내 질문은 위의 테이블과 같은 문자열의 끝에 숫자가있는 경우 문자열을 데이터베이스에 그대로 유지하면서 문자열을 생성 할 수 없다는 것입니다. 문자열의 길이는 항상 5 자입니다.

+0

스트립 해제 후행 숫자와 결과 문자열이 데이터베이스에 있는지 여부를 확인? – Wyzard

+0

세션이 5 자 여야하는 특별한 이유가 있습니까? – SomeKittens

+0

@Wyzard 문자열의 끝 부분에 숫자가 없으면 문자열이 이미 db에있는 것처럼 생성되지 않습니다. 그 문자열이 db의 끝에있을 때 문자열을 생성합니다. LIKE를 포함하도록 쿼리를 변경해야합니까? 그게 효과가 있니? – user1723760

답변

0
는에 조회를 변경

:

$result = "SELECT SessionId FROM Session WHERE SessionId LIKE CONCAT(?, '%')"; 
+0

안녕하세요, 나는 이것을 시도하고 작은 문자열로 테스트했지만 여전히 db에 이미있는 문자열을 생성합니다. SessionId의 데이터베이스가 'C', 'C1', C2 및 C3 인 경우, 문자열'C'를 생성해서는 안되지만 아직 문자열을 생성 중입니다. 그래서 같은 진술을 추측하고있는 Im은 작동하지 않습니다. – user1723760

1

각 세션/시험에 자신의 ID를 지정하고 (충돌 할 때 두통에 대해 걱정하지 않으려는 경우) GUID을 사용해보십시오. virtually no chance of collision이 있습니다.

+0

GUID를 사용하지 않고 사용하는 것을 두려워했던 링크를 읽으십시오. 혼란 스럽기 때문에 그것을 사용하는 것이 좋습니다. 내 코드에서 어떻게 조작 할 수 있습니까? – user1723760

+0

http://php.net/manual/en/function.com-create-guid.php. 대부분의 것들과 마찬가지로, PHP는 함수를 가지고 있습니다. – SomeKittens

관련 문제