Post

php로 MySQL데이터 연동하기

시작하기 전 준비사항

▶ php로 홈페이지를 만들기 위해 필요한 데이터를 연동하기 위해선 먼저 도메인 주소가 필요한데요,
없으신 분들은 https://www.dothome.co.kr/ 에서 꼭 하나의 도메인 계정을 만들어주세요!
캡처
그 다음 저는 이렇게 하나의 test폴더를 만들었고 그 안에서 작업을 진행해보도록 하겠습니다.

1. connect.php로 내 도메인과 연결하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    $host = "localhost";
    $user = "dlswl1111";    // 아이디
    $pw = "(계정 비밀번호)"; // 비밀번호
    $db = "dlswl1111";      // 데이터베이스로 지정할 이름

    $connect = new mysqli($host, $user, $pw, $db);
    $connect -> set_charset("UTF-8");

    if(mysqli_connect_errno()){
        echo "DATABASE Connect False";
    } else{
        // echo "DATABASE Connect True";
    }
?>

▶ php를 연결하기 위해선 < ?php’ 와 ?> 사이에 연동할 계정을 입력해주시면 되는데요, 이 때 중요한건 데이터를 입력할 때 ‘$’를 붙여주셔야 합니다.
각각의 호스트, 유저명, 비밀번호, 데이터베이스에 본인의 도메인 정보를 입력하셨다면 connect라는 연결 명령어를 통해 mysql로 정보를 연결하고, 문자를 UTF-8로 지정해주시면 도메인을 통해 만들어둔 웹브라우저에 잘 연결되었다면 DATABASE Connect True라는 메시지가 뜨게 됩니다.


2. createTest.php에 만들어둔 테이블 연결하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    include "../connect/connect.php";

    $sql = "CREATE TABLE test(";
    $sql .= "testID int(10) unsigned auto_increment,";
    $sql .= "testName varchar(10) NOT NULL,";
    $sql .= "testText varchar(100) NOT NULL,";
    $sql .= "regTime int(30) NOT NULL,";
    $sql .= "PRIMARY KEY(testID)";
    $sql .= ") charset=utf8;";

    $result = $connect -> query($sql);

    if($result){
        echo "Create Tables True";
    } else {
        echo "Create Tables False";
    }
?>

▶ 도메인 정보는 계속 동일하게 연결시켜주어야 하는데 똑같은 내용을 길게 쓰기 보다는 ‘include’라는 명령어를 통해 connect.php가 있는 url을 연결하면 connect.php에 입력된 정보가 그대로 연동됩니다.

table ▶ 저는 미리 만들어둔 SQL테이블에서 테이블명을 test로 바꾸고 ID와 Name, regTime만 가져온 후 Text를 추가해주었습니다. 자바스크립트에서 추가하는 명령어는 +이지만 php는 .을 사용하기 때문에 .=을 사용해 각각의 정보를 sql쿼리로 연결시켜줍니다.
잘 연결되었다면 웹브라우저엔 Create Tables True라는 메시지가 뜨게 됩니다.


3. POST를 활용해 saveTest.php에 만들어둔 테이블 데이터 넣어주기

1
2
3
4
5
6
7
8
9
10
11
<?php
    include "connect.php";

    $testName = $_POST['testName'];
    $testText = $_POST['testText'];
    $regTime = time();

    // 데이터 넣어주기
    $sql = "INSERT INTO test(testName, testText, regTime) VALUES('$testName', '$testText', '$regTime')";
    $connect -> query($sql);
?>

▶ 테이블 데이터를 넣어주기 위해선 INSERT INTO 테이블명 (필드명) VALUES(값); 형식으로 가져오면 되는데요,
이 때 $_POST는 변수값을 저장할 수 있기 때문에 많은 데이터 정보를 입력할 때 사용됩니다.
저는 이름과 텍스트 정보가 여러개이기 때문에 POST를 사용해주었고, regTime는 초단위의 시간까지 기록하기 위해 time()로 지정해주었습니다.
그 다음 넣으려는 데이터를 sql쿼리로 연결시켜주면 되는데, 아래의 주소로 로그인을 하시면 만들어둔 테이블명 파일에서 확인할 수 있습니다.
http://(본인의 도메인 주소)/myadmin/index.php


4. viewTest.php에 가져온 정보를 HTML 도메인 페이지에 출력하기

캡처1 ▶ 웹브라우저에 넣고 싶은 정보는 http://(본인의 도메인 주소)/myadmin/index.php에서 SQL메뉴란에
INSERT INTO 테이블명 (필드명) VALUES(값) 형식으로 데이터를 입력한 후 실행시켜주면 위의 이미지처럼 입력된 정보가 보여지게 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
    include "connect.php";

    $sql = "SELECT * FROM test";
    $result = $connect -> query($sql);

    if($result){
        $count = $result -> num_rows;

       for($i = 0; $i<$count; $i++){
            $info = $result -> fetch_array(MYSQLI_ASSOC);

            echo "<ul>";
            echo "<li>이름 : ". $info['testName'] ."</li>";
            echo "<li>댓글 : ". $info['testText'] ."</li>";
            echo "<li>시간 : ". $info['regTime'] ."</li>";
            echo "</ul>";
       }
    }
?>
</body>
</html>

▶ 그 다음 echo는 출력 함수 중 하나로 웹 페이지를 동적으로 구성할 때 매우 유용한데 이를 활용해 각각의 정보 결과를 info라는 변수에 배열 형태로 저장해줍니다. 그럼 입력된 정보가 웹브라우저에 아래 이미지와 같이 출력되는 걸 확인할 수 있습니다.

캡처2


5. 위의 내용을 바탕으로 index.php에 방명록 페이지 만들기

▶ 지금까지 알려드린 php로 데이터베이스 정보를 가져오는 방법을 익히셨다면, 이를 활용해 방명록 페이지를 간단하게 만들 수 있는데요, 아래는 제가 만들어본 방명록의 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<main id="main" role="main">
        <div class="guest">
            <h2>환영합니다 😊. 아무 글이나 써주세요!</h2>

            <form action="saveTest.php" name="saveTest" method="post">
                <fieldset>
                    <input type="text" id="testName" name="testName" placeholder="이름">
                    <input type="text" id="testText" name="testText" placeholder="100자 이내로 작성해주세요!">
                    <button type="submit">방명록 작성하기</button>
                </fieldset>
            </form>

            <div class="comment">
                <ul>
<?php
        include "connect.php";

        $sql = "SELECT * FROM test"; // 데이터베이스에서 모든 열을 선택하는 SQL 쿼리를 정의
        $result = $connect -> query($sql); // 정의된 SQL 쿼리를 실행하여 결과를 가져옴

        if($result){
            $count = $result -> num_rows;   // 가져온 결과의 행 수를 세어서 $count 변수에 저장

        for($i = 0; $i<$count; $i++){
                $info = $result -> fetch_array(MYSQLI_ASSOC);

                echo "<li>";     // 정보를 출력
                echo "<span> 📚 : ". $info['testName'] ."</span>";
                echo "<span> ✨ : ". $info['testText'] ."</span>";
                echo "<span> ⏰ : ". $info['regTime'] ."</span>";
                echo "</li>";
         }
     }
?>
                    
                </ul>
            </div>
        </div>
    </main>
    <!-- //main -->

▶ 위의 예시는 php에 저장해둔 정보를 for문을 통해 가져와 출력하는 형태인데요,
MYSQLI_ASSOC는 fetch_array() 메소드의 매개변수 중 하나로 이 매개변수를 사용하면 연관 배열 형태로 결과를 반환할 수 있습니다.
크기나 간격까지 따로 css를 통해 설정해주면 아래와 같이 내용이 출력되고 방명록을 작성할 때마다 데이터가 추가로 누적되어 출력됩니다. 캡처3


오늘은 php를 사용해 SQL데이터를 연결하고 이를 통해 방명록을 만드는 방법에 대해 알아봤는데요,
다음엔 어떤 내용의 정보를 들고 오는지 기대해주세요!

This post is licensed under CC BY 4.0 by the author.