[SQL] PDO를 사용하여 결과의 지표로서 열 값을 이용하여
SQLPDO를 사용하여 결과의 지표로서 열 값을 이용하여
나는 열 ID, 이름, URL에 '브랜드'라는 SQL 테이블을 가지고있다. 그 테이블에서 나는이 데이터 세트를 가지고 :
1, Solidfloor, solidfloor;
2, Quickstep, quickstep;
4, Cleanfloor, cleanfloor;
5, Blue Dolphin, blue-dolphin;
6, Krono, krono;
8, Meister, meister;
내가 증가 된 숫자하지의 배열의 인덱스하지만 특정 행의 ID가 필요, 나는 모두 지금을 가져 오는 그리고 난 대가로 좋은 배열을 얻을 수 있지만. 나는 결과 집합을 통해 코스 루프의 수 있지만,이 일을하는 청소기 방법은 무엇입니까?
해결법
-
==============================
1.ASSOC로 가져 오기
ASSOC로 가져 오기
수동의 경우 : http://php.net/manual/en/pdostatement.fetchall.php
fetch_style
그 마지막 부분이 핵심입니다. 그것은 (I 찾을 수 있음) 완전히 문서화하지 않는 것, 대신 PDO :: FETCH_COLUMN, 당신이 결합 할 수 PDO :: FETCH_ASSOC와 PDO :: FETCH_GROUP 원하는 결과를 달성하기 위해 :
$PDOstmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)
그래서, 위의 데이터를 주어진 :
$stmt = $PDO_obj->prepare('select * from brands'); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP); d($result);
결과 :
array (6) [ '1' => array (1) [ array (2) [ 'name' => string (10) "Solidfloor" 'url' => string (10) "solidfloor" ] ] '2' => array (1) [ array (2) [ 'name' => string (9) "Quickstep" 'url' => string (9) "quickstep" ] ] '4' => array (1) [ array (2) [ 'name' => string (10) "Cleanfloor" 'url' => string (10) "cleanfloor" ] ] '5' => array (1) [ array (2) [ 'name' => string (12) "Blue Dolphin" 'url' => string (12) "blue-dolphin" ] ] '6' => array (1) [ array (2) [ 'name' => string (5) "Krono" 'url' => string (5) "krono" ] ] '8' => array (1) [ array (2) [ 'name' => string (7) "Meister" 'url' => string (7) "meister" ] ] ]
(d ()는 () 단지 편리한 디버깅 위해서 var_dump 같은 kint 라이브러리 함수 () 또는 인 print_r이다)
당신은 당신이 원하는 열을 선택하기 위해 SELECT 문을 수정할 수 있도록 참고 열이 인덱스에 사용하는 배열은 항상 결과의 첫 번째 열 것입니다. 그리고 인덱스 열이 각 행의 배열 밖으로 제거된다는 것을 또한주의; 그것을 해결하기 위해, 당신은 당신의 선택 문에 두 번 열을 추가 할 수 있습니다 (즉, 선택 아이디, 브랜드. * 브랜드에서, 등).
반드시 각 인덱스는 한 번만 사용되었는지 확인하기 위해 PDO :: FETCH_UNIQUE처럼 http://php.net/manual/en/pdostatement.fetch.php : 여기 문서화 이상의 매개 변수가 있습니다.
-
==============================
2.PDO 있지만 :: PHP 설명서에 FETCH_UNIQUE 설명은 매우 불분명하지만, 당신이 실제로 필요한 매개 변수 사실 그것은 정확한입니다.
PDO 있지만 :: PHP 설명서에 FETCH_UNIQUE 설명은 매우 불분명하지만, 당신이 실제로 필요한 매개 변수 사실 그것은 정확한입니다.
$data = $pdo->query('SELECT * FROM table')->fetchAll(PDO::FETCH_UNIQUE);
당신에게 (귀하의 경우 ID를해야합니다 * 테이블 정의에서 먼저 필드를 사용하는 경우) 첫번째 SELECT 절에 나와있는 필드에 의해 색인 배열을주고있다.
단지 PDO를 사용하여 기본 ::으로 FETCH_UNIQUE이 두 배 값을 당신에게 결과 행을주지 않습니다. 당신도이 호출에 선호 행 모드를 추가하거나 할 수 있습니다 - 더의 setAttribute 생성자 또는 통해 모든 PDO 호출에 한 번 설정 (). 아래 PDO에 대해 표시되는 출력 :: 모드를 가져 기본값으로 FETCH_ASSOC 세트.
1 => array ( 'name' => 'Solidfloor', 'url' => 'solidfloor', ), 2 => array ( 'name' => 'Quickstep', 'url' => 'quickstep', ), 4 => array ( 'name' => 'Cleanfloor', 'url' => 'cleanfloor', ), )
from https://stackoverflow.com/questions/12833979/using-value-of-a-column-as-index-in-results-using-pdo by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 이상 절에 대한 올바른 구문을 사용하여 (0) | 2020.06.15 |
---|---|
[SQL] 이 성능은 모든 열을 선택하는 나쁜가요? (0) | 2020.06.15 |
[SQL] SQL Server의 함수 기반 인덱스 (0) | 2020.06.15 |
[SQL] 포스트 그레스 가장 가까운 운영자가 있습니까? (0) | 2020.06.15 |
[SQL] INSERTED SQL 서버 OUTPUT에 오라클 상당 있습니다. *? (0) | 2020.06.15 |