2014-09-22 5 views
0

그래, 데이터베이스에 정보가있어 표시가 필요하지만 올바르게 호출하는 데 문제가 있습니다.SQL SELECT, 여러 열에서 다중 행 표시

ID  Name sid   pos 
------------------------------- 
0  John 71829182 -30, 21, 0 
1  John 71829182 -21, 21, 54 
2  John 71829182 43, 21, -37 
3  John 71829182 98, 21, 21 

는 나는 이러한 위치에 보였다 71,829,182에서

존과 같은 것입니다 PHP를 사용하여 반향 그래서 같은 SID 행이있는 모든 행을 표시 할 필요가 -30, 21, 0 | -21, 21, 54 | 43, 21, -37 | 98, 21, 21

나는 그것을 알 수 없으므로 조언을 사용할 수 있습니다.

+0

지금 당장 기본 쿼리를 수행하고 $ row [ 'pos']를 호출합니다. –

답변

0

, 단일 컬럼에 행을 결합 GROUP_CONCAT를 사용할 수 있습니다

SELECT name, sid, GROUP_CONCAT(pos SEPARATOR '|') positions 
FROM yourtable 
GROUP BY name, sid 

편집, 주어진 당신의 댓글이 작동해야합니다 :

SELECT playername, steamID, position, lastlogin, 
     GROUP_CONCAT(position SEPARATOR '|') positions 
FROM player 
GROUP BY playername, steamID ORDER by playername 

PHP 코드에서 row['position']을 더 이상 호출 할 수 없으며 열 이름이 변경 되었기 때문에 row['positions']으로 전화해야합니다.

+0

이 코드는 전혀 작동하지 않으며 오류가 발생하는 것 같습니다. '$ sql = mysql_query ("SELECT playername, SteamID, position, lastlogin GROUP_CONCAT (position SEPARATOR '|') 위치에서 플레이어 GROUP BY playername, SteamID ORDER by playername"); \t while ($ row = mysql_fetch_array ($ sql)) { \t \t echo 'While'. $ row [ 'playername']. ' '$'[ 'position']. ''; \t}' –

+0

@JoshuaNightingale : SELECT 목록의 표현식 사이에'lastlogin'과'GROUP_CONCAT()'사이에 쉼표가 없습니다. 그리고 이것은 2014 년입니다. 왜 우리는 * 여전히 * PDO 나 mysqli가 아닌 mysql_ 인터페이스를 사용하고 있습니까? – spencer7593

+0

lastlogin과 GROUP_CONCAT 사이에 쉼표가 없습니다. if ($ sql! == false) – Gervs

0

사용자가 입력해야합니다 YOUR_DB_SERVER, YOUR_DB_NAME, _ 이름, _ 암호, YOUR_TABLE

$db = new PDO('mysql:host=YOUR_DB_SERVER;dbname=YOUR_DB_NAME;charset=UTF8', 'YOUR_USERNAME', 'YOUR_PASSWORD'); 
$db->query('select * from YOUR_TABLE WHERE sid = YOUR_SID'); 
$res = $db->fetchAll(PDO::FETCH_ASSOC); 
print_r($res); 

이 예는 여기에 대부분의 사람들이 당신으로 인해, PHP에서 DB에와 인터페이스 사용하는 것이 좋습니다 것입니다 PDO를 사용하여 그 강력한 성격, 주로 SQL 주입을 피할 수있는 능력과 많은 DB 유형을 지원합니다. DB와의 인터페이스에 사용할 수있는 다른 많은 함수가 있지만, 기존의 것이며 더 이상 오래 사용할 수 없습니다.

위의 예제에서 fetchAll은 모든 결과를 얻는 데 사용됩니다. 한 행에 대해 fetch()를 사용하고 한 행에 대해 fetchColumn()을 사용할 수도 있습니다.

PDO :: FETCH_ASSOC은 필드 값이 필드 값에 바인딩 된 배열을 반환하도록 PDO에 지시합니다. 다른 옵션이 있습니다. 자세한 내용은 PHP 매뉴얼을 참조하십시오. 당신은 SQL 솔루션에 관심이 있다면

+1

mysqli도 강력하지만 mysql db에만 연결할 수 있습니다. – DirtyRedz