본문 바로가기
코딩 정보/web

php와 MySQL 연동해서 데이터 추가하기

by 꽁이꽁설꽁돌 2024. 5. 10.
728x90
반응형

목차

     

    php를 통해 mysql의 데이터에 접근하여 데이터를 추가하고 사용하는 방법을 알아보자

    여러가지 방법이 있지만 나는 mysqli를 이용해서 진행했다.

     

    먼저 데이터 베이스를 만들어주자 다음은 그에 대한 코드이다.

    city_database.php

    <?php
     //connect to MySQL
     $db = mysqli_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.');
     // 서버 ip주소 사용자 이름 비밀번호
     $query = 'CREATE DATABASE IF NOT EXISTS citysite';
     //이미 테이터 베이스가 존재할 경우 새로운 데이터 생성 x
     mysqli_query($db, $query) or die(mysqli_error($db));
     //연결이 안되었다면 연결 객체($db)에서 발생한 마지막 오류에 대한 설명을 반환합니다. (console.log와 비슷한 느낌)
     mysqli_select_db($db, 'citysite') or die(mysqli_error($db));
     //이 함수는 MySQL 서버에 연결된 후에 특정 데이터베이스를 선택하기 위해 사용됩니다. 
     //즉, 이 함수를 사용하여 데이터베이스에 대한 작업을 수행하기 위해 연결된 MySQL 데이터베이스를 선택할 수 있습니다.
     $query = 'CREATE TABLE mytable (
        SID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        S_Name VARCHAR(255) NOT NULL, 
        S_Gender ENUM("Male", "Female", "Other") NOT NULL DEFAULT "Other",
        S_City VARCHAR(255) NOT NULL, we
        S_Street VARCHAR(255) NOT NULL, 
        S_Population INTEGER UNSIGNED NOT NULL DEFAULT 0, 
        City_Area DECIMAL(10, 2) NOT NULL DEFAULT 0, -- 도시의 면적 (제곱킬로미터)
        City_Country VARCHAR(255) NOT NULL, -- 도시의 국가
        City_Elevation DECIMAL(10, 2) NOT NULL DEFAULT 0, -- 도시의 해발고도 (미터)
        City_Founded DATE NOT NULL, -- 도시의 설립일
        City_GDP INTEGER UNSIGNED NOT NULL DEFAULT 0, 
        PRIMARY KEY (SID)
      ) 
      ENGINE=MyISAM';
    //PRIMARY KEY (movie_id): 이 부분은 movie 테이블의 기본 키를 정의합니다. 기본 키는 각 행을 고유하게 식별하는 열(또는 열의 집합)입니다. 
    //movie 테이블에 대한 인덱스를 정의합니다. 인덱스는 데이터베이스의 검색 속도를 향상시키기 위해 사용됩니다. 
    //여기서 movie_type과 movie_year 두 개의 열로 구성된 인덱스를 정의합니다. 이 인덱스는 movie_type과 movie_year 열의 값에 기반하여 테이블의 행을 빠르게 찾을 수 있도록 도와줍니다. 
    //이는 주로 검색 및 정렬 작업을 빠르게 하기 위해 사용됩니다.
    mysqli_query($db, $query) or die(mysqli_error($db));
    echo 'City database successfully created!';
    ?>

     

     

    페이지에서 데이터를 추가하고 데이터 테이블을 출력하는 방법

    <!DOCTYPE html>
    <html lang='en'>
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    
    <body>
        <form action="" method="post">
    
            <h1>User Data Entry</h1>
            <p>
                <label for="name">Name:</label>
                <input type="text" name="name" id="user">
            </p>
            <p>
    
                <input type="radio" id="Male" name="gender" value="Male" checked />
                <label for="male">Male</label>
                <input type="radio" id="Female" name="gender" value="Female" />
                <label for="female">Female</label>
    
            </p>
            <p>
                <label for="city">City:</label>
                <select name="city" id="city">
                    <option value="youngin">youngin</option>
                    <option value="seoul">seoul</option>
                    <option value="busan">busan</option>
                    <option value="junju">junju</option>
                    <option value="dague">dague</option>
                    <option value="jeju">jeju</option>
                </select>
            </p>
    
            <p>
                <label for="country">Country:</label>
                <select name="country" id="country">
                    <option value="Korea">Korea</option>
                    <option value="America">America</option>
                    <option value="England">England</option>
                    <option value="japan">Japan</option>
                    <option value="Africa">Africa</option>
                    <option value="China">China</option>
                </select>
            </p>
    
            <p>
                <input type="submit" name="submit" value="Submit">
            </p>
        </form>
        <?php
        if(isset($_POST['submit'])) {  // POST 요청으로 전송된 데이터 중에서 'submit'이라는 이름의 변수가 있는지를 확인합니다. 
            $name = $_POST['name'];
            $city = $_POST['city'];
            $gender = $_POST['gender'];
            $country = $_POST['country'];
            $servername = 'localhost';
            $username = 'root';
            $password = '';
            $dbname = 'citysite';
    
            // Create connection
            $db = new mysqli($servername, $username, $password, $dbname) or die("Connection failed:");
    
            // 데이터를 mysqli에 삽입합니다.
            $query = "INSERT INTO mytable (S_Name, S_Gender, S_City, City_Country) VALUES ('$name', '$gender', '$city', '$country')";
            mysqli_query($db, $query) or die(mysqli_error($db));
    
        }
        ?>
        <h2>Retrieve Data from the "mytestdb" Database</h2>
        <form method="post" action="">
            <label for="selected_city">Select a city:</label>
            <select id="selected_city" name="selected_city">
                <option value="" disabled selected>Select a city</option>
                <option value="youngin">youngin</option>
                <option value="seoul">seoul</option>
                <option value="busan">busan</option>
                <option value="junju">junju</option>
                <option value="dague">dague</option>
                <option value="jeju">jeju</option>
            </select>
            <input type="submit" name="retrieve" value="Show">
        </form>
    
        <?php
        if(isset($_POST['retrieve']) && isset($_POST['selected_city'])) {
            $selected_city = $_POST['selected_city'];
            $servername = 'localhost';
            $username = 'root';
            $password = '';
            $dbname = 'citysite';
    
            // mysqli 연결
            $db = new mysqli($servername, $username, $password, $dbname) or die("Connection failed:");
    
            // 데이터베이스를 선택된 도시로 부터 받아온다.
            $query = "SELECT SID, S_Name, S_Gender, S_City, City_Country FROM mytable WHERE S_City = '$selected_city' ORDER BY SID";
            $result = mysqli_query($db, $query) or die(mysqli_error($db));
            //데이터 테이블의 생성
            echo "<h3>User Data for $selected_city</h3>";
            echo "<table border='1'>";
            echo "<tr><th>SID</th><th>Name</th><th>gender</th><th>City</th><th>Country</th></tr>";
            if ($result->num_rows > 0) {
                while($row = mysqli_fetch_array($result)) {
                    echo "<tr><td>" . $row["SID"] . "</td><td>" . $row["S_Name"] . "</td><td>"  . $row["S_Gender"] . "</td><td>". $row["S_City"] . "</td><td>". $row["City_Country"] ."</td></tr>";
                }
            } else {
                echo "<tr><td colspan='3'>No data available</td></tr>";
            }
            echo "</table>";
    
            $db->close();
        }
        ?>
    </body>
    
    </html>

     

    도시와 관련되어 데이터를 받아오고 테이터 테이블을 출력하는 페이지

     

     

    직접 코드를 짜서 데이터에 넣는 방법

    <?php
    // connect to MySQL
    $db = mysqli_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.');
    // make sure you're using the correct database
    mysqli_select_db($db, 'citysite') or die(mysqli_error($db));
    // insert data into the mytable table
    $query = 'INSERT INTO mytable
    (SID, S_Name, S_Gender, S_City, S_Street, S_Population, City_Area, City_Country, City_Elevation, City_Founded, City_GDP)
    VALUES
    (1,"huaksu", "male","youngin", "singal", 100000, 1000.5, "korea", 100.1, "2001-01-01", 1234),
    (2, "minsu", "male", "seoul", "sadang", 100000, 1020.5, "korea", 100.1, "1970-01-01", 1234123),
    (3, "younhee", "female", "jeju", "dongu", 100000, 1000.5, "korea", 100.1, "1940-01-01", 12341233)';
    mysqli_select_db($db, 'citysite') or die(mysqli_error($db));
    echo 'CityData inserted successfully!';  //성공적으로 데이터를 삽입했을 경우 출력
    ?>

     

     

     

     

    이런식으로 데이터가 잘 추가된 것을 볼 수 있다.

     

    반응형