mysqli_result::fetch_assoc
을 사용하면 결과 집합의 각 행을 연관 배열로 반환 할 수 있습니다. MySQL에서는 질의에 같은 이름을 가진 두 개의 열을 갖게하지만 연관 배열이 정확히 수행해야하는 경우에도 연관 배열에 매핑 할 때 —을 지정합니다.
book
및 author
의 두 테이블을 접합 테이블 book_author
으로 연결한다고 가정합니다. MySQL의에서 두 id
열 반환 다음 쿼리를 실행할 수 있습니다 : 당신이 연관 배열에 이러한 행 중 하나를 매핑 할 경우
SELECT b.*, a.*
FROM book AS b
JOIN book_author AS ba ON ba.book_id = b.id
JOIN author AS a ON a.id = ba.author_id
LIMIT 2;
+----+-----------------+----+--------------+
| id | title | id | name |
+----+-----------------+----+--------------+
| 1 | Design Patterns | 1 | Erich Gamma |
| 1 | Design Patterns | 2 | Richard Helm |
+----+-----------------+----+--------------+
을, 당신은 당신의 배열에서 하나의 id
요소와 끝까지 :
$row = $result->fetch_assoc();
print_r($row);
Array
(
[id] => 1
[title] => Design Patterns
[name] => Erich Gamma
)
행의 마지막 id
열은 그 앞에있는 모든 행을 덮어 씁니다. 여기 ’ 결과 세트에서 두 번째 행 S :
Array
(
[id] => 2
[title] => Design Patterns
[name] => Richard Helm
)
이것은 단지 연관 배열의 요소의 값을 수정 같은된다; 당신이 당신의 쿼리에서 어느 테이블 자체에 이렇게, 또는 그것을 쿼리에 별칭을 제공함으로써 각 열에 고유 한 이름을 지정하면
$row = array();
$row['id'] = 1;
print_r($row);
Array
(
[id] => 1
)
$row['id'] = 2;
print_r($row);
Array
(
[id] => 2
)
이 문제는 피할 수있다 : 또는
SELECT b.id AS book_id, b.title,
a.id AS author_id, a.name
FROM book AS b
JOIN book_author AS ba ON ba.book_id = b.id
JOIN author AS a ON a.id = ba.author_id
LIMIT 2;
+---------+-----------------+-----------+--------------+
| book_id | title | author_id | name |
+---------+-----------------+-----------+--------------+
| 1 | Design Patterns | 1 | Erich Gamma |
| 1 | Design Patterns | 2 | Richard Helm |
+---------+-----------------+-----------+--------------+
$row = $result->fetch_assoc();
print_r($row);
Array
(
[book_id] => 1
[title] => Design Patterns
[author_id] => 1
[name] => Erich Gamma
)
, 대신 prepared statements을 사용할 수 있습니다.하나는 결국 경향이
$sql = 'SELECT b.*, a.* ' .
'FROM book AS b ' .
'JOIN book_author AS ba ' .
'ON ba.book_id = b.id ' .
'JOIN author AS a ' .
'ON a.id = ba.author_id';
$stmt = $mysqli->prepare($sql);
$stmt->execute();
$stmt->bind_result($book_id, $book_title, $author_id, $author_name);
while ($stmt->fetch()) {
printf("%s, %s, %s, %s\n",
$book_id,
$book_title,
$author_id,
$author_name);
}
이것은 'id1'과'id2'를 사용하여 열을 참조 할 수있게 해준다. (또는' as xxx' to) –
모두에게 감사드립니다! 나는 대개 명시 적으로 원하는 열을 선택하고 내 PKs 'id'의 이름을 지정하면됩니다. 내가 인수 한 프로젝트에는 테이블 이름에 대한 필드와 상수가 너무 많아서 모든 것을 입력하면 나에게 게으르다. – pistolshrimp