> 백엔드 개발 > PHP 튜토리얼 > Notes 004 PHP POD 연구 노트 03

Notes 004 PHP POD 연구 노트 03

黄舟
풀어 주다: 2023-03-04 08:54:02
원래의
1086명이 탐색했습니다.

1. 연결 설정

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
? ;

2. 연결 오류 처리


try {
$dbh = new PDO( 'mysql :host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row );
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() "
die();
}
?>

연결 끊기



$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 여기서 연결 사용

// 이제 실행이 완료되었습니다. $dbh = null; ?>

트랜잭션


모든 데이터베이스 트랜잭션이 지원되는 것은 아닙니다. , 따라서 PDO는 연결이 처음 열릴 때 소위 "자동 커밋" 모드에서 실행되어야 합니다. 자동 커밋 모드는 데이터베이스가 지원하는 경우 각 쿼리 실행에 자체 암시적 트랜잭션이 있고 데이터베이스가 트랜잭션을 지원하지 않는 경우에는 없음을 의미합니다. 트랜잭션이 필요한 경우 PDO::beginTransaction() 메서드를 사용하여 시작해야 합니다. 기본 드라이버가 트랜잭션을 지원하지 않으면 PDOException이 발생합니다(이는 오류 처리 설정에 관계없이 심각한 오류 조건입니다). 트랜잭션이 시작되면 트랜잭션의 코드가 성공적으로 실행되었는지 여부에 따라 PDO::commit() 또는 PDO::rollBack()을 사용하여 완료할 수 있습니다.

스크립트가 종료되거나 연결이 닫히려고 할 때 완료되지 않은 트랜잭션이 있으면 PDO가 자동으로 트랜잭션을 롤백합니다. 이 안전 조치는 스크립트가 예기치 않게 종료되는 경우 불일치를 방지하는 데 도움이 됩니다. 트랜잭션이 명시적으로 커밋되지 않은 경우 문제가 발생한 것으로 가정하므로 데이터를 안전하게 유지하기 위해 롤백이 수행됩니다.

다음 예에서는 새 직원에 대한 항목 집합이 생성되고 ID 23이 할당되었다고 가정합니다. 개인의 기본 데이터를 등록하는 것 외에도 급여를 기록하는 것도 필요합니다. 두 업데이트를 개별적으로 수행하는 것은 간단하지만 PDO::beginTransaction() 및 PDO::commit() 호출에 포함하면 완료될 때까지 다른 사람이 변경 사항을 볼 수 없도록 할 수 있습니다. 오류가 발생하면 catch 블록은 트랜잭션이 시작된 이후 발생한 모든 변경 사항을 롤백하고 오류 메시지를 인쇄합니다.


시도해 보세요. {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo "Connectedn";
} catch (Exception $e) {
die("연결할 수 없습니다: " . $e->getMessage ());
}

{
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->를 시도하세요. ;beginTransaction(); $dbh->exec("직원(ID, 이름, 마지막) 값에 삽입 ​​(23, 'Joe', 'Bloggs')") $dbh->exec("insert into 급여 변경( ID, 금액, 변경 날짜) 값 ​​(23, 50000, NOW())"); $dbh->commit();

} catch(예외 $e) { $dbh-> ;rollBack() ; echo "Failed: " . $e->getMessage() } ?>

위는 Note 004 PHP POD Study Note 03의 내용입니다. PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿