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($salt, 0, 20);
$encrypted = base64_encode(hash('sha256', $salt.$password, true) . $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/>";
}
?>
|
728x90
'Web 프로그램 > PDO' 카테고리의 다른 글
PDO 로그인 6개월 경과 접속 차단 기능 (1) | 2022.09.30 |
---|---|
PDO(PHP Data Object) NULL 반환처리 (0) | 2022.01.12 |
PHP PDO 500 에러메시지 해결 (0) | 2020.03.07 |
PHP Legacy 함수를 PDO 방식 함수로 변환하기 (0) | 2019.05.20 |
[안드로이드] 회원가입폼 및 회원가입처리(PHP PDO 연동) (0) | 2017.11.20 |