테스트 사이트 - 개발 중인 베타 버전입니다

sql_query / foreach 학문적 궁금증 채택완료

sinbi 3년 전 조회 2,038

$sql = "SELECT vs_date FROM {$g5['visit_sum_table']}"; $result = sql_query($sql); print_r2($result);

foreach ($result as $row) {     $count = sql_fetch("SELECT COUNT(*) AS cnt FROM {$g5['visit_table']} WHERE vi_date = '{$row['vs_date']}'");

    ....

 

위 코드에서 파란색부분의 $result 값은 아래처럼 배열형태입니다.

mysqli_result Object (     [current_field] => 0     [field_count] => 1     [lengths] =>      [num_rows] => 87     [type] => 0 )

 

그런데, foreach 반복문에서 $result를 $row 로 치환 시,

어떻게 해서 $row값에 해당 테이블 행의 컬럼과 값이 들어갈 수 있는지 궁금합니다.

(예) $row['vs_date']

 

보통, as로 치환 시, 키=>값  (또는, 그냥 값) 형태로 담기는 걸로 아는데, 

그럴 경우, $row에 담기는 것은 $result 결과에 나온 배열키가 맞는 것 같은데 (예: $row['type'])

어떻게 해서 $row에 해당 테이블의 컬럼명이 배열키로 사용될 수 있는지 궁금합니다.

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
3년 전

https://stackoverflow.com/a/41199224

(mysqli_result object는 Traversable 인터페이스를 지원하고, 반복되면 내부적으로 fetch()를 호출한다?)

 

$result는 배열이 아니라 객체(Object) 입니다. (mysqli_result Object) 

배열인 경우 print_r() 출력시 Array ( [~] => ~) 같은 형태로 나옵니다.

 

저도 처음 알게 된 사실이라.. 이정도 밖에 찾지 못했습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sinbi
3년 전
자세한 설명과 유익한 좌표 소개 정말 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

OOP에서 지원하는 

Operator overloading(Implicit type casting  관련)을 이해하시면 간단한 개념입니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인