728x90

통상적으로 쉽고 간단하게 하기 위해 positional placeholders 를 이용한 방법을 사용한다.

$sql = "UPDATE users SET name=?, surname=?, sex=? WHERE id=?";
$params = array($name, $surname, $sex, $id);
$stmt= $pdo->prepare($sql);
$stmt->execute($params);

 

UPDATE query with named placeholders

$data = array('name' => $name,'surname' => $surname,'sex' => $sex,'id' => $id);
$sql = "UPDATE users SET name=:name, surname=:surname, sex=:sex WHERE id=:id";
$stmt= $pdo->prepare($sql);
$stmt->execute($data);

 

 

비밀번호 변경하는 간단 예제이다.

<?php
$idx = 15;
$passwd = "new1234!"// 비밀번호
 
require_once 'path.php';// root 폴더를 기준으로 상대적인 경로 자동 구하기
require_once $g['path_config'].'config.php';
require_once $g['path_class'].'dbconnect.php';
require_once $g['path_class'].'loginClass.php';
$d = new LoginClass;
 
$hash = $d->hashSSHA($passwd);
$encrypted_pw = $hash['encrypted']; // encrypted password
$salt = $hash['salt']; // salt
 
$QKEY = "passwd=?,salt=?";
$params = array($encrypted_pw,$salt,$idx);
$d->getDbUpdate('members',$QKEY,$params,'idx=?');
 
echo '변경완료'
 
?>
 
<?php
class LoginClass {
    // 패스워드 해쉬함수 : 20자 SALT + SHA256 암호화
    function hashSSHA($password) {
        $salt = sha1(rand());
        $salt = substr($salt020);
        $encrypted = base64_encode(hash('sha256'$salt.$passwordtrue) . $salt);
        $hash = array("salt" => $salt"encrypted" => $encrypted);
        return $hash;
    }
 
    function getDbUpdate($table$set$params$where) {
        $sql = "update " . $table . " set " . $set . ($where ? ' where ' . $where : '');
        try {
            $this->db->beginTransaction();
            $stmt = $this->db->prepare($sql);
            $status = $stmt->execute($params);
            $this->db->commit();
            return 1;
        } catch (PDOException $pex) {
            $this->db->rollBack();
            echo "에러 : " . $pex->getMessage();
            return -1
        }
    }
}
?>
 

 

 

기본적인 Insert, Update, Delete, 검색에 대한 샘플이다.

 
<?php
    require_once('dbCon.php');
    $pdo = dbConnect();
    
    //입력처리
    if(isset($_POST['action']) && $_POST['action'== 'insert'){
        try{
            $pdo->beginTransaction();
            $sql = "INSERT INTO member (name, age, email) VALUES(:name, :age, :email)";
            $stmt = $pdo->prepare($sql);
            $stmt->bindValue(':name',$_POST['name'],PDO::PARAM_STR);
            $stmt->bindValue(':age',$_POST['age'],PDO::PARAM_INT);
            $stmt->bindValue(':email'$_POST['email'], PDO::PARAM_STR);
            $stmt->execute();
            $pdo->commit();
            print "데이터 입력 처리 하였습니다.<br/><br/>";
        } catch (PDOException $pex) {
            $pdo->rollBack();
            print "에러 : ".$pex->getMessage();
        }
    }
    
    //수정처리
    if(isset($_POST['action']) && $_POST['action']=='update'){
        //세션 변수를 이용하여 id값을 획득한다.
        $id = $_SESSION['id'];
        try{
            $pdo->beginTransaction();
            $sql = "UPDATE member SET name = :name, age=:age, email = :email WHERE id = :id";
            $stmt = $pdo->prepare($sql);
            $stmt->bindValue(':name'$_POST['name'], PDO::PARAM_STR);
            $stmt->bindValue(':age'$_POST['age'],PDO::PARAM_INT);
            $stmt->bindValue(':email'$_POST['email'], PDO::PARAM_STR);
            $stmt->bindValue(':id',$id,PDO::PARAM_INT);
            
            $stmt->execute();
            $pdo->commit();
            print "데이터를 수정 처리하였습니다.<br/>";
        } catch (PDOException $pex) {
            $pdo->rollBack();
            print "에러 : ".$pex->getMessage();
        }
        // 사용한 세션 변수를 삭제한다.
        unset($_SESSION['id']);
    }
    
    //삭제 처리
    if(isset($_GET['action']) && $_GET['action']=='delete' && $_GET['id'> 0){
        try{
            $pdo->beginTransaction();
            $id = $_GET['id'];
            $sql = "DELETE FROM member WHERE id = :id";
            $stmt = $pdo->prepare($sql);
            $stmt->bindValue(':id'$id, PDO::PARAM_INT);
            $stmt->execute();
            $pdo->commit();
            print "데이터를 삭제 처리하였습니다...<br/><br/>";
        } catch (PDOException $pex) {
            $pdo->rollBack();
            print "에러 : ".$pex->getMessage();
        }
    }
    
    //검색 처리
    try{
        if(isset($_POST['searchWord']) && $_POST['searchWord'!= ""){
            $searchWord = '%'.$_POST['searchWord'].'%';
            $sql = "SELECT * FROM member WHERE name LIKE :name";
            $stmt=$pdo->prepare($sql);
            $stmt->bindValue(':name',$searchWord,PDO::PARAM_STR);
 
            $stmt->execute();
        }else{
            //현재 DB에 있는 회원리스트를 모두 출력한다.
            $sql = "SELECT * FROM member";
            $stmt = $pdo->query($sql);
        }
        
        $cnt = $stmt->rowCount();
    }catch(PDOException $pex){
        print "에러 : ".$pex->getMessage();
    }    
    if($cnt < 1){
        print "검색 결과가 없습니다!!<br/>";
    }
?>

 

블로그 이미지

Link2Me

,