레이블이 php 간단 일기장 - 데이터베이스와 php 연결인 게시물을 표시합니다. 모든 게시물 표시
레이블이 php 간단 일기장 - 데이터베이스와 php 연결인 게시물을 표시합니다. 모든 게시물 표시

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
mysql_close();
 ?>
 

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

형태를 띈다.

php 간단 일기장 - php 에서 데이터베이스에 명령 내리기

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


 php 간단 일기장 - php 에서 데이터베이스에 명령 내리기

데이터베이스와 연결 후에는 데이터베이스에 명령을 내려야 한다.
이러한 데이터베이스의 '명령'을 쿼리(Query) 라고 하며, 우리말로 하면 '질의한다' 라는 의미이다.


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

select * from diary
는 diary 테이블 에서 (from) 모든것(*) 을 가져와(select) 라는 의미이다.
이 문자열은 데이터베이스가 알아들을 수 있는 '쿼리' 이다.
아직 명령을 내린 것은 아니며, 이러한 명령을 내릴 것이다.. 라고 $query라는 변수에 정의한 것이다.


 $result = mysql_query($query);

실제로 php 에서 데이터베이스로 명령을 내린다는 것이다.

    $query 의 값 "diary 테이블에서 모든것을 가져와" 라고
    mysql 에게 명령해 (mysql_query)
    그리고 명령의 결과를 $result 변수에 담아.

라는 뜻이다.

php 간단 일기장 - php 와 데이터베이스 연결

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


php 간단 일기장 - php 와 데이터베이스 연결



여기서는 php4 버전 기준으로 설명한다.
php4 는 mysql_connect 를,
php5 는 mysqli_connect 사용함.

웹서버와 데이터베이스 서버는 각각 서로 다른 프로그램이기 때문에, 서로 통신할 수 있는 방법이 필요하다.

따라서 php가 실행되는 웹서버에서는 데이터베이스 서버에 질의를 할 때

    데이터베이스와 연결을 하고
    데이터베이스에 명령을 내리고
    결과를 받는다.

이때 데이터베이스에 연결하기 위해서는

    어떤 데이터베이스 서버에 : host
    데이터베이스에 질의를 할 수 있는 권한 확인을 위한 나의 이름 : user
    데이터베이스에 질의를 할 수 있는 내비밀번호 : passwd
    어떤 데이터베이스 종류에 : db

라는 정보가 필요하다.


코드
<?php
$db_host = "localhost"; 
$db_user = "php111";
$db_passwd = "php111"; 
$db_name = "phpdiary"; 

$conn = mysql_connect($db_host,$db_user,$db_passwd) or die ("데이터베이스 연결에 실패하였습니다!");

mysql_select_db($db_name, $conn); 

mysql_query("set names utf8");

?>
 
코드설명 
localhost 는 웹서버가 있는 컴퓨터를 뜻한다. 따라서 localhost 라고 지정하면 웹서버와 데이터베이스 서버가 같은 컴퓨터라는 의미이다.

$conn = mysql_connect($db_host,$db_user,$db_passwd)
을 풀어쓰면
mysql에 연결해. (mysql_connect) 데이터베이스 서버는 웹서버와 같은 곳에 있어. (localhost)
내 이름은 php111 이야 비밀번호는 php111 이야.
가 된다.


or die ("데이터베이스 연결에 실패하였습니다!");
는 데이터베이스 접속에 실패했을 경우, 데이터베이스에서 값을 가져와서 보여주거나 하는 것을 할 수가 없기 때문에 그대로 접속을 종료한다는 의미이다.


일단 데이터베이스 시스템과 연결이 되고 나면 어떤 데이터베이스와 연결할 지 데이터베이스 시스템에 알려줄 필요가 있다.
이 역할을 하는 것이 mysql_select_db 이다.



mysql_query("set names utf8");

php 와 데이터베이스를 연결할 때 어떤 character set 을 사용할 것인지 나타낸다.
Database 를 만들때, 소스파일 txt 인코딩, html 의 인코딩을 모두 utf-8 로 지정했으므로 utf-8 로 설정하면 된다.
주의할 점은 utf-8 이 아니라 하이픈이 빠진 utf8 이라는 것이다.