php 입문 | PDO를 사용한 데이터베이스 액세스 | PDO으로 테이블 데이터 삭제, 수정

이 밖에 필요한 작업은 레코드 삭제, 그리고 기존에 있는 레코드의 내용을 갱신하는 작업이 있다. 이에 대해서도 정리해 설명하겠다.

레코드 삭제

delete from 테이블 where 조건

삭제는 delete from 테이블이라는 형태로 실행한다. 그러나 이것만 있으면 지정한 테이블의 레코드를 모두 삭제해 버리므로 “어떤 레코드를 삭제하는 것인가"라는 정보를 추가해 줄 필요가 있다. 그러기 위해서 필요한 구문이 검색에 사용한 “where"이다.

where 조건을 설정하면 조건에 맞는 레코드를 검색하여 이를 삭제한다. 조건 설정을 변경하면 예기치 않게 레코드를 삭제해 버리는 일이 생길 수 있기에 주의가 필요하다.

실제 사용 예로서 아래에 “이름을 지정하여 레코드를 삭제"하는 코드를 작성해 보도록 하자.

index.php의 송신 폼

        <table>
        <form method="post" action="./remove.php">
            <tr><td>검색 단어:</td><td><input type="text" name="name"></td></tr>
            <tr><td></td><td><input type="submit" value="송신"></td></tr>
        </form>
        </table>

remove.php

<?php
$name = htmlspecialchars($_POST['name']);
try {
    $pdo = new PDO("mysql:host=localhost:3306;dbname=mysampledata;charset=utf8", "root","1234");
    $query = "delete from sampletable where name = '$name'";
    $pdo->exec($query);
    //echo $query;
} catch(PDOException $e){
    echo "<html><body><h1>ERR:" . $e->getMessage() + "</h1></body></html>";
}
$pdo = null;
header('Location: index.php');

index.php 양식을 준비하여 두고, 여기에 삭제할 레코드의 이름을 입력하면 해당 이름의 레코드를 삭제한다.

레코드 수정

update 테이블 set 컬럼 =  where 조건

레코드 수정은 “update 테이블” 이라는 것을 사용한다. 수정 내용은 “set” 후에 컬럼명과 설정 값을 “컬럼 = 값"과 같이 등호로 작성한다. 여러 컬럼을 변경하려면 그들을 쉼표로 구분하여 계속 작성한다. 예를 들면set name = 'foo', mail = 'foo@ foo'이런 식이다.

그리고, 이 update도 “어떤 레코드의 내용을 업데이트할 것인가"를 where 조건을 사용하여 지정한다. 그러면 검색된 레코드의 컬럼가 set 한 내용으로 수정된다. 여러 레코드가 조회되면 그 컬럼이 모두 지정된 값으로 수정해 버리기 때문에, 잘해서 검색 조건을 틀리지 않도록 해야한다.

 

이제 레코드 만들기, 검색, 수정, 삭제 등 기본적인 작업을 할 수 있게 되었다. 대충 다시 읽어 보면 알 수 있듯이, 조작의 대부분은 “PHP"보다는 “SQL 쿼리"로 동작하고 있다는 것을 알 수 있다. PDO으로 동작하고 있는 것은 단지 “SQL 쿼리를 실행하는"것에 지나지 않는다.

본격적으로 데이터베이스를 이용해 싶은 사람은 PDO에 대해서는 물론, “SQL의 사용법"에 대해서도 제대로 공부해야 한다. SQL을 잘 다룰 수 있게 되면, PDO 이용의 기본은 거의 마스터했다고 해도 과언이 아니다.




최종 수정 : 2021-08-27