2015년 1월 3일 토요일

php 간단 일기장 -php 에서 데이터베이스의 결과값 가져오기

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 -php 에서 데이터베이스의 결과값 가져오기

<?php
$query = 'select * from diary';
$result = mysql_query($query);
$total = mysql_affected_rows();

for ($i=0;$i<$total;$i++)
{
    mysql_data_seek($result,$i);
    $r = mysql_fetch_array($result);
}
?>



데이터베이스에 '쿼리' 로 명령을 내리고 나면 , 데이터베이스는 명령을 실행한 결과를 돌려준다.
결과는 $result 변수 안에 들어가게 된다.
이때 실행한 결과인 $result 변수는 Resource 타입이다.

주의해야 할 점은, 데이터베이스는 기본적으로 집합을 다룬다는 것이다.
즉 diary 테이블에서 모든 내용을 가져와 라고 명령했을 때, 특정한 조건이 없으므로 데이터베이스는 diary 테이블에 있는 모든 페이지의 정보를 돌려준다.
따라서 결과는 여러 페이지가 될 수 있다.

$result 값 예시.

    diary_id      contents                 write_date
       1              [첫번째 데이터]     2014.03.26
       2              [두번째 데이터]     2014.03.27


$total = mysql_affected_rows();
는 이렇게 데이터베이스가 돌려준 페이지가 몇 장인지 알려주는 함수이다.
아래 예시에 따르면 $total 은 2가 된다.


for ($i=0;$i<$total;$i++)
데이터베이스가 돌려준 결과의 갯수만큼 반복한다.


mysql_data_seek($result,$i);
$result 에는 데이터베이스에서 실행한 결과가 Resource 타입으로 들어간다. 이 Resource 안에는 여러개의 데이터가 있을 수 있으며, mysql_data_seek 명령어는 여러개의 데이터 중 하나의 데이터를 선택하라는 명령어이다.
반복문 안에 명령어가 있기 때문에 $i 는 페이지의 장 수만큼 변한다.

    첫번째 반복에서는 결과값 중 첫번째 결과값을 선택하게 된다.
    두번째 반복에서는 결과값 중 두번째 결과값을 선택하게 된다.


$r = mysql_fetch_array($result);
mysql_fetch_array 는 선택한 결과값을 배열로 변환하라는 함수다.


첫번째 반복일 때 $r의 값.
diary_id : 1
contents : 첫번째 데이터
write_date : 2014.03.26
1 : 1
2 : 첫번째 데이터
3 : 2014.03.26


두번째 반복일 때
diary_id : 2
contents : 두번째 데이터
write_date : 2014.03.27
1 : 2
2 : 두번째 데이터
3 : 2014.03.27


$r 의 값은 연관배열이다. 주목해야 할 점은 연관배열의 키가 '숫자', 그리고 '컬럼 이름' 이라는 것이다.
첫번째 데이터의 경우 $r의 값은
키 = 키 = 값
diary_id = 1 = 1
contents = 2 = 첫번째 데이터
write_date = 3 = 2014.03.26

형태를 띈다.

댓글 없음:

댓글 쓰기