본문 바로가기

language/php

4. [PHP] DB 연동

728x90
반응형

이번시간엔 MySQL DB 에 연결하고 쿼리문을 통해 값을 가져오는것 까지 해보겠다.

 

우선 DataBase IDE를 사용해서 테이블을 만들고 값을 넣어보자.

본인은 DBeaver 라는 IDE를 사용하고 있다. 자동완성이나 편의성등 나쁘지 않게 잘 사용하고 있다.

 

우선 DB를 Connect 해주자.

포트 번호와 MySQL을 잘 맞춰주고, username과 password 를 입력해주면 된다.

본인은 user를 따로 만들지 않았고, password도 만들어두지 않아서 그냥 root에 비밀번호 없이 연결했다.

 

drop database if exists phpstudy;
create database phpstudy;
use phpstudy;

create table article (
	id INT(10) unsigned not null primary key auto_increment,
	regDate datetime not null,
	updateDate datetime not null,
	title char(100) not null,
	`body` text not null
);

연결하고 phpstudy 란 이름의 DB를 만들고, 또한 게시물 테이블을 만들어주었다.

insert into article 
set regDate = now(),
updateDate = now(),
title = '제목1',
`body` = '내용1';

insert into article 
set regDate = now(),
updateDate = now(),
title = '제목2',
`body` = '내용2';

commit;

예시를 위한 2개의 값을 Insert 하고 반드시 commit을 해주자.

 

이제 다시 php로 돌아가서 새로운 php 파일을 생성해주자.

php파일 생성후, intellij ultimate 버전을 기준으로

! + Tab 을 하면 기본 html 뼈대가 완성된다.

 

코드를 보여주고 천천히 설명하도록 하겠다.

<?php
//Database 연결 객체
$dbConn = mysqli_connect("127.0.0.1","root","","phpstudy") or die("DB CONNECTION ERROR");

//query String
$sql = "SELECT * FROM article";
//query 결과
$rs = mysqli_query($dbConn,$sql);

//빈 Array 객체
$articles = [];

while ($article = mysqli_fetch_assoc($rs)){
    $articles[] = $article;
}
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>게시물 리스트</title>
</head>
<body>
    <h1>게시물 리스트</h1>
    <hr>

    <div>
        <?php foreach ( $articles as $item) { ?>
            번호 : <?=$item['id']?><br>
            작성 : <?=$item['regDate']?><br>
            수정 : <?=$item['updateDate']?><br>
            제목 : <?=$item['title']?><br>
            내용 : <?=$item['body']?><br>
            <hr>
        <?php } ?>
    </div>
</body>
</html>

 

$dbConn = mysqli_connect("127.0.0.1","root","","phpstudy") or die("DB CONNECTION ERROR");

우선 위의 코드는 Database에 연결해주는 객체이다.

mysqli_connect() 내부에 총 4개의 parameter 값이 들어갔는데

순서대로 hostname,username,password,database 이다.

127.0.0.1 은 localhost와 같은뜻으로 

즉 위는 localhost의 phpstudy란 database를 root계정에 비밀번호 없는것으로 연결하겠다는 것이다.

or die 같은경우에는 만약 연결에 실패하면 에러 페이지가 나온다.

에러 페이지

 

$sql = "SELECT * FROM article";
$rs = mysqli_query($dbConn,$sql);

$sql 변수는 단순한 String (문자열) 값으로 Database query를 작성해주면 된다.

$rs 변수는 위의 dbConn 객체에 sql변수 값을 실행시켜준다는 것으로 그 결과가 $rs 객체에 담긴다.

 

 

$articles = [];
while ($article = mysqli_fetch_assoc($rs)){
    $articles[] = $article;
}

위의 코드는 $articles 라는 빈 배열 객체를 생성해주고,

while문을 통해 빈 배열에 값을 넣어주는 것이다.

이 부분이 php와 다른 언어와의 차이점인데, 

보통의 while의 조건문 () 안에는 == 이나 != 같은 조건식이 들어가야 하는데,

위에는 = 단 하나만 들어갔다. 이 경우에는 만약 우측 값이 NULL 이 들어오면 자동으로 while문이 멈추게 된다.

 

while (true){
    $article =mysqli_fetch_assoc($rs);
    if($article == null){
        break;
    }

    $articles[] = $article;
}

즉 위와 같은 코드라는 것이다.

또한 $articles[] = $article; 은 순차적으로 값을 넣어주는 역할을 한다.

 

이제 위의 코드를 작성하고 지난번처럼

http://localhost:80/파일명.php 

로 들어가주면

값이 제대로 출력되는 것을 알 수 있다.

반응형

'language > php' 카테고리의 다른 글

3. [PHP] php기초, 변수와 콘솔 실행  (0) 2022.04.05
2. [PHP] apache 세팅  (0) 2022.04.04
1. [PHP] 개발환경 세팅 - xampp 설치, port  (0) 2022.04.04