ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SISS/웹 스터디] 2학기 6주차 스터디 - MySQL + PHP
    24-2 SISS/웹 2024. 11. 3. 23:50

    2학기 6주차 스터디 - MySQL + PHP

    : 6주차 10/28 ~ 11/03 [PHP & MYSQL] 01 ~ 07

     

    1. 수업 소개


    • php와 mysql을 연동하여동적으로 페이지를 생성하는 방법에 대해 배울 예정

     

    2. PHP와 MySQL의 연동 원리


    1. 웹 브라우저의 index.php 파일 요청
    2. 웹 서버가 요청을 받음(웹 서버에서 처리할 수 없음을 확인)
    3. php(미들웨어)에 처리 요청
    4. 데이터를 mysql에서 읽어와 html 코드 생성
    5. 생성한 코드 제공

    2. PHP와 MySQL의 연동 원리

     

    3.1. 수업 준비(웹 쪽)


    • 새 파일 만들기
      • index.php
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>웹</title>
        </head>
        <body>
            <h1>웹</h1>
            <ol>
                <li>에이치티엠엘</li>
            </ol>
            <h2>어서오십시오</h2>
        </body>
        Lorem ipsum dolor, sit amet consectetur adipisicing elit. Voluptatem animi facilis quos, nostrum dolore doloremque? Quod iusto fugit delectus pariatur dolorum esse dolor sunt! Consectetur, eius! Earum nostrum necessitatibus in!
    </html>

     

    3.2. 수업 준비(데이터베이스 쪽)


    • 스키마 생성(opentutorials.topic)
    CREATE DATABASE opentutorials;    // 데이터베이스 생성
    SHOW DATABASES;    // 보기
    
    use opentutorials;    // opentutorials DB에
    create table topic (
        -> id int(11) not null auto_increment,
        -> title varchar(45) not null,
        -> description text,
        -> created datetime not null,
        -> PRIMARY KEY(id)
        -> ) ENGINE=InnoDB;
        
    show tables;    // 테이블 보기
    desc topic;    // topic 테이블의 구성 보기

     

    4. PHP Client로서 MySQL


    • mysql 서버 제어
      1. mysql 모니터(클라이언트) 이용
      2. php(클라이언트)의 함수 이용

     

    5. MySQL API 찾기


    • php를 이용하여 mysql 접속하는 api(공식 문서 확인)
      • mysqli(수업에서 사용)
      • pdo_mysql(추천)
        • 오라클 같은 다른 관계형 데이터베이스 사용 시 db 교체 용이(코드 수정이 필요 없음)
        • 객체를 사용
      • mysql(비추천)

     

     

    6.1. mysqli_connect


    • mysqli_connect(”DB 서버 주소”, “mysql 사용자명”, “비밀번호(직접 쓰지 않음)”, “DB명”)
      • 인증 및 접속
        • mysql 모니터와 같은 역할을 수행할 수 있도록 도움
        • 로그 확인은 mysql general_log enable을 검색하여 시도해볼 수 있음
      • 함수형 프로그래밍 시 사용

     

    6.2. mysqli_query


    • mysqli_query(mysqli_query 결과, “SQL문”);
      • DB에 데이터 추가(절차식 형식)
    /* php 파일을 로드할 때마다 추가가 됨 */
    <?php
    $conn = mysqli_connect("localhost", "root", "20242024", "opentutorials");
    mysqli_query($conn, "
        INSERT INTO topic
            (title, description, created)
            VALUE(
                'MySQL',
                'MySQL is ...',
                NOW()
            )
    ");
    ?>

    6.2. mysqli_query

     

    6.3. mysqli_error


    • mysqli_error(오류 링크)
      • 오류 메시지 확인(절차식 형식)
      • 실제 개발 시에는 화면에 출력하지 않도록 주의(데이터베이스의 구조를 알 수 있음) → 파일로 저장해야함

     

    • mysqli_query(결과 값)
      • 오류 발생 시 false 반환
    <?php
    $conn = mysqli_connect("localhost", "root", "20242024", "opentutorials");
    $sql = "
        INSERT INTO topic
            (title, description, created)
            VALUE(
                'MySQL',
                'MySQL is ...',
                NOW()
            )";
            
    $result = mysqli_query($conn, $sql);
    if($result == false) {
        echo mysqli_error($conn);
    }
    ?>
    

     

    7. 활용 - 글 생성


    • index.php
    <?php
    $conn = mysqli_connect("localhost", "root", "20242024", "opentutorials");
    $sql = "
        INSERT INTO topic
            (title, description, created)
            VALUE(
                'MySQL',
                'MySQL is ...',
                NOW()
            )";
            
    $result = mysqli_query($conn, $sql);
    if($result == false) {
        echo mysqli_error($conn);
    }
    ?>

     

    • create.php
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>웹</title>
        </head>
        <body>
            <h1>웹</h1>
            <ol>
                <li>HTML</li>
            </ol>
            <form action="process_create.php" method="POST">
                <p><input type="text" name="title" placeholder="title"></p>
                <p><textarea name="description" placeholder="description"></textarea></p>
                <p><input type="submit"></p>
            </form>
        </body>
    </html>

     

    • process_create.php
    <?php
    $conn = mysqli_connect(
        'localhost',
        'root',
        '20242024',
        'opentutorials');
    $sql = "
        INSERT INTO topic
        (title, description, created)
        VALUES(
            '{$_POST['title']}',
            '{$_POST['description']}',
            NOW()
        )
    ";
    $result = mysqli_query($conn, $sql);
    if($result === false) {
        echo '저장 오류';
        error_log(mysqli_error($conn));
    } else {
        echo '저장 성공 <a href="index.php">돌아가기</a>';
    }
    ?>

     

    • 오류 로그 확인
      • …/apache/logs/error_log

    7. 활용 - 글 생성

    •  
Designed by Tistory.