PDO로 sql 다루기

Sangyeong Je·2022년 10월 21일
0

프로그래밍

목록 보기
10/11
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
        <style>
            body{display: flex; align-items: flex-start; justify-content: space-between; padding: 0 40px;}
            body>div{width: calc(50% - 40px); display: flex; flex-direction: column;}
            h1 { font-size:14pt;padding:5px 30px;background-color:#333; color: #fff; display: inline-block; border-radius: 20px;}
            table tr td {padding:5px 10px; color: #333; background-color: #cecece;}
            input[type="submit"]{border-radius: 4px; padding: 5px 10px; border: 0; background-color: #333; color: #fff; cursor: pointer;}
            span{font-size: 12px; color: #666;}
        </style>
        
    </head>
    <body>
        <div class="ctl">
            <h1>추가하기</h1>
            <table>
            <form method="post" action="add.php">
                <tr><td>NAME:</td><td><input type="text" name="name"></td></tr>
                <tr><td>leg:</td><td><input type="number" name="leg"></td></tr>
                <tr><td>eat:</td><td><input type="number" name="eat" max="3"> <span>1 = 육식, 2 = 채식, 3 = 잡식</span></td></tr>
                <tr><td></td><td><input type="submit" value="추가"></td></tr>
            </form>
            </table>
            <hr>
            <h1>삭제하기</h1>
            <table>
            <form method="post" action="remove.php">
                <tr><td>srh idx:</td><td><input type="number" name="idx"></td></tr>
                <tr><td>srh name:</td><td><input type="text" name="name"></td></tr>
                <tr><td>srh leg:</td><td><input type="number" name="leg"></td></tr>
                <tr><td></td><td><input type="submit" value="삭제"></td></tr>
            </form>
            </table>
            <hr>
            <h1>변경하기</h1>
            <table>
            <form method="post" action="update.php">
                <tr><td>select idx:</td><td><input type="number" name="idx"></td></tr>
                <tr><td>change name:</td><td><input type="text" name="name"></td></tr>
                <tr><td>change leg:</td><td><input type="number" name="leg"></td></tr>
                <tr><td></td><td><input type="submit" value="변경"></td></tr>
            </form>
            </table>
            <hr>
            <form method="post" action="./select.php" class="form_srh">
            <tr><td>이름 검색: </td><td><input type="text" name="name" class="srh_name"></td></tr>
            <tr><td></td><td><input type="submit" value="송신"></td></tr>
            </form>
        </div>
        <div class="view">
            <h1>테이블 리스트 조회</h1>
            <table>
                <thead>
                    <td>idx</td>
                    <td>name</td>
                    <td>leg</td>
                    <td>eat</td>
                </thead>
                <tbody class="table">
                    <!-- add databace -->
                </tbody>         
            </table>
        </div>
        <script src="//code.jquery.com/jquery-latest.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                function postActive(data){
                    $('.table').empty();
                    data = JSON.parse(data);
                    data.forEach(function(data){
                       var idx = data.idx;
                       var name = data.name;
                       var leg = data.leg;
                       var eat = data.food;
                       $('.table').append(
                           `<tr>
                           <td>${idx}</td>
                           <td>${name}</td>
                           <td>${leg}</td>
                           <td>${eat}</td>
                           </tr>`
                       );
                    })
                }
                $.post('https://www.jesang0.com/db_test/select.php',function(data){
                    postActive(data);
                })

                $('body').on('submit', '.form_srh', function(e){
                    e.preventDefault();
                    var srh_name = $('.srh_name').val();
                    $.post('https://www.jesang0.com/db_test/select.php',{name: srh_name},function(data){
                        postActive(data);
                    });
                })
            })
        </script>
    </body>
</html>

1. Select

<?php 

require_once "db_info.php";

$query = " SELECT 
		test_table.idx,
		test_table.name,
		test_table.leg,
		eat_table.food
		FROM test_table
		LEFT OUTER JOIN eat_table
		ON test_table.eat = eat_table.idx
		";
if (isset($_POST['name'])){
	$name = $_POST['name'];
	if($name != ''){
		$query .= "WHERE name LIKE '$name'";
	}
}
try {
	$pdo = new PDO("mysql:host={$dbHost};dbname={$dbName};charset={$dbChar}", $dbUser, $dbPass);
	//$statement = $pdo->query("SELECT * FROM test_table");
	$statement = $pdo->query($query);
	$result = $statement->fetchall(PDO::FETCH_ASSOC);
	$result = json_encode($result, JSON_UNESCAPED_UNICODE);
	echo $result;
	
} catch(PDOException $ex){
	echo "<h1>연결 실패:" . $ex->getMessage() . "</h1>";
}


 ?>

2. Insert

<?php
require_once "db_info.php";

$name = $_POST['name'];
$leg = $_POST['leg'];
$eat = $_POST['eat'];

try {
    $pdo = new PDO("mysql:host={$dbHost};dbname={$dbName};charset={$dbChar}", $dbUser, $dbPass);

    //exec 방식
    $query = "INSERT INTO test_table (name, leg, eat) VALUES ('$name', '$leg', '$eat')";
    $pdo->exec($query);

    //execute 방식
    //$stmt = $pdo->prepare("INSERT INTO test_table (name, leg) VALUES (:name, :leg)");
    //$stmt->bindValue(":name",$name);
    //$stmt->bindValue(":leg",$leg);
    //$stmt->execute();
    unset($pdo);
	header('Location: index.php');

} catch(PDOException $ex){
    echo "<h1>연결 실패:" . $ex->getMessage() . "</h1>";
}
?>

3. Update

<?php
require_once "db_info.php";

$idx = $_POST['idx'];
$name = $_POST['name'];
$leg = $_POST['leg'];

try {
   $pdo = new PDO("mysql:host={$dbHost};dbname={$dbName};charset={$dbChar}", $dbUser, $dbPass);
   // exec
   //$query = "UPDATE test_table SET name = '$name', leg = '$leg' WHERE idx = '$idx'";
   //$pdo->exec($query);

   //execute
   $stmt = $pdo->prepare("UPDATE test_table SET name = :name, leg = :leg WHERE idx = '$idx'");
   $stmt->bindValue(":name",$name);
   $stmt->bindValue(":leg",$leg);
   $stmt->execute();

   unset($stmt);
   header('Location: index.php');

} catch(PDOException $ex){
   echo "<h1>연결 실패:" . $ex->getMessage() . "</h1>";
}

4. Delete

<?php
require_once "db_info.php";

$idx = $_POST['idx'];
$name = $_POST['name'];
$leg = $_POST['leg'];

try {
   	$pdo = new PDO("mysql:host={$dbHost};dbname={$dbName};charset={$dbChar}", $dbUser, $dbPass);
   	if($idx != null){
   			$query = "DELETE from test_table where idx = '$idx'";
   	}else if ($name != null){
   			$query = "DELETE from test_table where name = '$name'";
   	}else {
   			$query = "DELETE from test_table where leg = '$leg'";
   	}
   	$pdo->exec($query);

   	unset($pdo);
	header('Location: index.php');
} catch(PDOException $ex){
   	echo "<h1>연결 실패:" . $ex->getMessage() . "</h1>";
}

0개의 댓글