2012-03-05 5 views
0

mySql 데이터베이스가 있고 쿼리 중 하나에서 GROUP_CONCAT 함수를 사용하여 개별 행의 값을 쉼표로 구분 된 문자열로 가져옵니다. 처음에는 쿼리가 BLOB을 반환하고 누군가 다른 질문에서 제안한 것처럼 GROUP_CONCAT을 GROUP_CONCAT (DISTINCT CONVERT (classes.type, CHAR (2)))로 변경했습니다. 여태까지는 그런대로 잘됐다. 쿼리가 작동하고 phpMyAdmin에서 결과 집합의 쉼표로 구분 된 값을 볼 수 있습니다. GROUP_CONCAT에서 사용되는 call.type 필드는 값으로 "1"또는 "2"만 가질 수 있습니다. 결과는 "1"- "1,2"- "2"- "1,2"(대시는 결과를 구분합니다.) 등이 있습니다. 문제는 php를 사용하여 "2"문자를 읽을 수 없다는 것입니다. in_array (explode 사용 후) 모든 것을 시도했습니다. 예를 들어 strpos는 strpos ($ result, "1")를 사용할 때 문자의 위치를 ​​반환하지만 strpos ($ result, "2")를 사용할 때는 항상 0을 반환합니다. 모든 아이디어 ?? 감사합니다.GROUP_CONCAT 결과의 특정 값을 읽을 수 없습니다.

+0

문자열을 문자별로 인쇄 해 보셨습니까? 'CONVERT' 문자열의 인코딩은 무엇입니까? 'for ($ i = ...) var_dump ($ result [$ i]); '와 같이, – biziclop

+1

단락을 참조하십시오. – Julien

+0

phpMyAdmin에서 볼 수 있듯이 쿼리의 첫 번째 결과는 "2,1"입니다. var_dump ($ result)는 var_dump ($ result)가 for와 동일한 결과에 대해 string (1) "2"string (1) ","string (1) "을 반환하는 동안 string (3)"2,1 "을 반환합니다. 인코딩은 UTF-8입니다. – tliokos

답변

1

코드로 정확히 달성하려는 것은 무엇입니까? 그것을 모두 쓰는 더 쉬운 방법이 있을지 모르지만, 나는 당신이하려고하는 것이 무엇인지 이해하는데 어려움을 겪고 있습니다. 반환되는 쉼표로 구분 된 정수 목록에서 주어진 정수의 위치를 ​​찾으려고합니까?

관련 문제