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문
?>