2013-03-20 2 views
8

나는이 코드를 가지고있다. 나는 다른 fetch_styles를 시도했다.PDO의 연관 배열을 반환 연관

는 좀 다른 스타일을 시도하고 내가 좋아하는 얻을 수 :

[0] svenska 
[1] engelska 

하지만 내가 좋아하는 싶지 :

[1] svenska 
[2] engelska 

(1과 2는 데이터베이스 ID의 값입니다)

나는 함수를 만들고 FETCH_FUNC과 함께 전화를 할 수 있다고 생각하지만 그게 너무 좋을지는 모르겠다.

위 항목이 최선의 방법인가요?

+3

잊어 행 [$ row_num] [$ col_name]' – jdstankosky

+0

나는 당신이 지금 무엇을 요구하고 있는지 이해합니다. 귀하의 특정 문의 사항을 해결하기 위해 업데이트 된 답변을 참조하십시오. – jdstankosky

답변

10

더 좋은 방법이 있다면 정말 확실하지. 너 이걸 시험해 볼 수 있니?

$rows = $statement->fetchAll(PDO::FETCH_ASSOC); 

$languages = array(); 

function getLangs($col, $row) { 
    $languages[$col['id']] = $col['name']; 
} 

array_walk($rows, 'getLangs'); 

foreach 루프에는 아무런 문제가 없습니다. 나는 네가 가진 것을 실제로 사용할거야. 그것은보다 청소기 얻기 어렵다 ...

UPDATE :

후 신중하게 다시 읽는 당신이 정말로 요구해야하는 것은 당신이 그런 방법으로 쿼리를 포맷 할 수 있는지 여부를 귀하의 질문에, 그 결과 다른 형식으로 반환됩니다.

일반 SELECT 쿼리가 반환되는 방법은 thusly 히입니다 :

// Query result is only one row, with each 'id' as column name 
// And the 'name' from the same row as it's value... 

+---------+----------+-----+-----+-----+ 
|  1 |  2 | ... | ... | ... | 
+---------+----------+-----+-----+-----+ 
| svenska | engelska | ... | ... | ... | 
+---------+----------+-----+-----+-----+ 

$row = array(
    row_1 => array(
      1 => "svenska", 
      2 => "engelska", 
     ... => "...", 
     ... => "...", 
     ... => "..." 
    ) 
) 

$languages = $row[row_1]; 
$languages[$id] = $name; 

나 ': 몇 가지 방법은 다음과 같이 쿼리 결과를 반환 할

+----+----------+ 
| id |  name | 
+----+----------+ 
| 1 | svenska | 
| 2 | engelska | 
| .. |  ... | 
| .. |  ... | 
+----+----------+ 

$row = array(
    row_1 => array(
     id => "1", 
     name => "svenska" 
    ), 
    row_2 => array(
     id => "2", 
     name => "engelska" 
    ), 
    row_3 => array(
     id => "...", 
     name => "..." 
    ), 
    row_4 => array(
     id => "...", 
     name => "..." 
    ) 
) 

$row[$row_number][$column_name] = $value 

당신은 무엇을 요구하는지 것은 난 완벽하게 정직하게, SQL에서 do this 수 있습니다 완전히 모르겠다. 당신이 할 수 있다고하더라도 나는 또한 그것을 반대하는 것이 좋습니다. 스케일링 테이블에서는 끔찍한 일입니다. 당신의 테이블이 정적이라면, 내가 방금 언급 한 방식으로 포맷하지 않으시겠습니까? 인클루드 파일의 정적 인 PHP 배열에있는 것이 아닌가? `그럼 당신은 $`에 의해 참조 할 수 있습니다, 당신은`$ 행 = $ 명령문 -> fetchAll (PDO :: FETCH_ASSOC)는 않는, PDO와 연관 배열을 반환하려면

+0

고마워요! :-) 무슨 뜻이야?왜 이것을 include-file의 정적 PHP 배열에 포함해야합니까? 그게 무슨 말이야? – bestprogrammerintheworld

+0

@bestprogrammerintheworld 정적 테이블인지 여부를 알지 못했습니다. 언어는 항상 거기에있을 것이고 데이터베이스에있는 유일한 이유는 쿼리를 사용하여 배열을 찾는 것입니다. 왜 배열을 작성하지 않는 것이 좋을까요? (예를 들어,''lang.php ''를 포함한다.) 다시 질문 할 테이블에 대한 지식이 없기 때문에 여기에서 추론하고있다. – jdstankosky

+0

팁을 주셔서 감사합니다! : -) – bestprogrammerintheworld

13

모두가

$sth->fetchAll(PDO::FETCH_KEY_PAIR); 
+0

둘 이상의 열을 사용하여 작업하는 경우 더 좋은 해결책이 될 수 있습니다 : '$ STH-> fetchAll (PDO :: FETCH_ASSOC);' – dangre00