이번시간엔 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 |