PHP를 통한 데이터베이스 속 정보 불러오기


mysqli - PHP에 내장된 API



서버 접속         $conn = mysqli_connect('localhost','root','111111');


DB선택             mysqli_select_db($conn,'opentutorials');         -> mysql 서버 속 opentutorials 라는 이름을 가진 DB 선택


조회                $result = mysqli_query($conn, 'SELECT * FROM topic'); -> opentutorials DB 속 topic테이블에서 모든 데이터를 조회하라고 질의(query) 요청


출력                 $row = mysqli_fetch_assoc($result);

echo $row['title'];

echo $row['description'];


-> 조회한 내용 중 첫번째 행의 데이터만 리턴 값으로 반환하는데 그 리턴 값은 연관배열(associative array) 형식임

-> 첫 행의 title 과 description 필드의 값을 가져와라


연관배열


$array = Array('title'=>'JA','description'=>'JA is...');

echo $array['title']; 의 화면 출력값은 JA임


mysqli_fetch_assoc 를 여러번 실행하면 행이 계속 추가되어 정보를 가져옴


만약 데이터가 4행까지 있는데 5번 복붙 실행한 경우


5번째


$row = mysqli_fetch_assoc($result);

var_dump($row)


=> 화면에 NULL 출력 (NULL은 false와 같음)



※ 복붙 실행 경우 코드가 길어짐 -> 반복문을 통해 중복 제거


while ($row = mysqli_fetch_assoc($result) {  


$row['title'];

$row['description'];

acho '<br />';


}


---> 첫 실행시 1행의 데이터 값을 가져옴. PHP에서 값이 있다는 것은 true로 간주한다.

배열값이 NULL 값이 되면 false가 되어 반복이 끝남




1. 데이터베이스에서 title 정보를 뽑아 네비에 정보 출력하기


<ol>

<?php


while($row=mysqli_fetch_assoc($result)){


echo '<li><a href="http://localhost/index.php?='.$row['id'].'">'.$row['title'].'</a></li>'."\n";

}

?>

</ol>


-> n행에 있는 title 필드 값을 클릭하면 n행에 해당하는 주소(article 페이지)로 이동 


\n ->줄바꿈 태그



2. 데이터 베이스에서 해당 id의 title,description 정보를 뽑아 본문에 출력하기 (id는 하나임으로 반복문 필요X)


<article>


<?php


if(empty($_GET['id']==false) {

$sql='SELECT * FROM topic WHERE id='.$_GET['id]; -> id로 입력된 값을 sql문에 넣어서 찾고자 하는 정보에 해당되는 sql문을 만들 수 있음

$result = mysqli_query($conn, $sql);

$row = mysqli_fetch_assoc($result);

echo '<h2>'.$row['title'].'</h2>';

echo $row['description'];

}


?>


※ 아티클의 $_GET['id'] 의 id가 곧 네비의 주소 $row['id'] 의 id 값임


-> 네비에서 타이틀을 클릭하면 그 행의 id값을 지닌 페이지로 이동

-> 주소창 id 부분에 값을 넣으면 get함수를 통해 정보를 받아 아티클의 해당 id 행의 정보 페이지로 이동


3. 사용자가 웹 에플리케이션을 통해 정보를 입력하여 데이터베이스 서버에 전송하는 방법


form -> 입력 정보를 서버로 전송하는 수단


1) write.php


<form action="" method=""> </form> 


-> action : 입력값이 어디로 전송되야 하는가? = 버튼을 눌렀을 때 form으로 감싸져 있는 태그들(control)을 action 속성에 지정된 에플리케이션에 전송한다는 뜻



<form action="process.php" method="post">

<p>

제목: <input type="text" name="title">

</p>

<p>

작성자: <input type="text" name="autor">

</p>

<p>

본문: <textarea name="description"></textarea>

</p>

<input type="submit" name="name">

</form>


-> 본문의 textarea 태그는 내용이 길 때 쓰는 태그이다

-> 제목,작성자,본문을 작성하여 전송버튼을 누르면 process.php 에플리케이션으로 입력한 데이터가 post 방식으로 전송됨


2) process.php


<?php


$conn= mysqli_connect('localhost','root','111111');

mysqli_select_db($conn,'opentutorials');

$sql= "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."','".$_POST['description']."','".$_POST['created']."',now()");

$result=mysqli_query($conn,$sql);


-> write.php에서 입력받은 정보를 수신하면 process.php에서 post 방식으로 받아서 $sql 변수에 입력 쿼리를 담아 $result 변수로 시행한다.

-> 사용자가 보낸 정보를 에플리케이션에서 받는 방법은 get, post 2가지 방식인데 $_GET, $_POST 라는 약속된 변수를 사용한다.


header ('Location: http://localhost.index.php');


-> 입력이 완료된 후 자동 페이지 이동 (리다이렉션)



※ PHP 함수값이 아닌 것은 모두 문자 처리한다. ex) 데이터베이스 sql문


?>



 







'프로그래밍 > 코딩야학' 카테고리의 다른 글

데이터 보안  (0) 2017.06.20
관계형 디비 이론, 실습  (0) 2017.06.20
데이터 베이스  (0) 2017.06.19
PHP 실습  (0) 2017.06.16
16 JS 실습  (0) 2017.06.14
복사했습니다!