query('select *from user');"를 통해 쿼리를 실행하고 결과 set 객체를 반환합니다."/> query('select *from user');"를 통해 쿼리를 실행하고 결과 set 객체를 반환합니다.">

 >  기사  >  백엔드 개발  >  PHP에서 pdo를 사용하는 방법

PHP에서 pdo를 사용하는 방법

小老鼠
小老鼠원래의
2023-04-21 14:24:522126검색

pdo in php는 가볍고 일관된 PHP 인터페이스를 정의할 수 있는 확장 클래스 라이브러리입니다. 사용법은 다음과 같습니다. 1. PHP 샘플 파일을 생성합니다. 2. "try{$link = new PDO(.); }catch(PDOException $e){...}"를 사용하여 pdo 객체를 생성합니다. 3. "$link->query('select *from user');"를 통해 쿼리를 실행하고 결과 집합 객체를 반환합니다.

PHP에서 pdo를 사용하는 방법

이 운영 체제 환경: Linux5.18.14 시스템, Dell G3 컴퓨터.

1. 기본 개념

1. PDO: PHP Data Object의 약어입니다. PDO 확장 클래스 라이브러리는 어떤 데이터베이스를 사용하든 일관된 기능을 통해 쿼리와 데이터를 얻을 수 있도록 데이터 액세스 추상화 계층을 제공하는 가볍고 일관된 PHP용 인터페이스를 정의합니다.

PDO는 다양한 데이터베이스의 액세스 인터페이스를 통합하는 "데이터베이스 액세스 추상화 계층"입니다.

2. 모든 데이터베이스의 작업은 PDO 확장 자체를 사용하여 수행되지 않으며 다양한 데이터베이스 서버에 대한 특정 PDO 드라이버를 사용하여 액세스해야 합니다. 예: MYSQL(PDO_MYSQL). PDO 부분 목록은 phpinfo() 함수에서 볼 수 있습니다.

2. PDO 설치

1. Linux: PHP를 설치할 때 구성 명령에 다음 플래그를 추가하세요:

–with-pdo-mysql=/usr/local/mysql //where/usr/local/ mysql은 mysql 설치 디렉터리입니다

2. Windows:

C:windows

에서 php.ini 파일을 찾으세요.(1) 열기: Extension=php_pdo.dll

(2) 열기: Extension=php_pdo_mysql.dll

3. PDO 프로세스 사용

1. 데이터베이스에 연결

2. PDO 객체 생성:

(1)$link = new PDO(DSN, 사용자 이름, 비밀번호, 드라이버 속성);

1) DSN: 사용해야 하는 드라이버와 사용할 데이터베이스를 정의하는 데 사용되는 데이터 소스 이름입니다. mysql의 DSN 형식: 'mysql:host=localhost;dbname=lamp30'

2) DSN을 다음과 같이 파일에 넣을 수 있습니다: 'uri:file:///usr/local/dsn.txt'

3) PDO 인스턴스 선언 시 오류가 발생하면 자동으로 예외가 발생하므로 객체 생성 시 try...catch 문을 사용하세요. 예:

코드는 다음과 같습니다

try{
$link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’);
}catch(PDOException $e){
echo $e->getMessage();
exit(‘连接数据库错误.’);
}

3. 드라이버 속성

(1) 필요한 옵션을 배열에 전달할 수 있습니다(속성 이름은 요소 키로 사용되며 속성 값은 요소 값) 생성자의 네 번째 매개변수에 전달됩니다. 드라이버 속성이 생성자에 정의되지 않은 경우 나중에 PDO 클래스의 setattribute() 함수를 사용하여 각 속성을 정의할 수 있습니다.

(2) 책의 P501페이지에 이러한 속성에 대한 중국어 설명이 있습니다.

3. 문자 집합 설정: $link->query('set names UTF8')

5. SQL 문 보내기

(1)$link->exec(): 추가, 삭제 및 수정을 실행합니다. , 수신된 영향을 받은 행 수를 반환합니다. 실행이 실패하면 false 또는 0이 반환됩니다.

(2)$link->query(): 쿼리를 실행하고 PDOStatement 결과 집합 개체를 반환합니다.

6. 쿼리 결과

1. 비쿼리:

(1) $link->exec()를 직접 사용하여 영향을 받은 행 수를 반환합니다.

(2)$link->lastInsertId( )를 사용하여 INSERT 명령으로 생성된 AUTO_INCREMENT 숫자 값

2. 전처리

7을 참조하세요. 2단계: SQL 문 보내기

코드는 다음과 같습니다

$stmt = $link->prepare(‘select * from user where id=:id’);
$stmt->bindparam(‘:id’, $id, PDO::PARAM_INT);
$id = 2;
$stmt->execute();

bindParam( ) 매개변수에는 다음과 같은 7가지 유형이 있습니다.

PDO::PARAM_INT

PDO::PARAM_STR

PDO::PARAM_BOOL

PDO::PARAM_NULL

PDO::PARAM_LOB: 대형 객체 데이터 유형을 작성할 필요가 없습니다.

PDO::PARAM_STMT: PDOstatement type

PDO ::PARAM_INPUT_OUTPUT: 저장 프로시저에서 사용하는 데이터 유형

2 3단계:

예:

코드는 다음과 같습니다

$stmt = $link->query(‘select * from user’);

(1) fetch () method

$pdoStat ->bindColumn(1, $id); //第一个参数可以是从1开始的索引值
$pdoStat ->bindColumn(‘name’, $name); //也可以是列名
$pdoStat ->bindColumn(‘pass’, $pass);
while($row = $stmt ->fetch(PDO::FETCH_BOUND)){
echo $id.’ ’;
echo $name.’ ’;
echo $pass.’
’;
}

fetch()에는 6개의 매개변수가 있습니다. 매뉴얼을 참조하세요.

setFetchMode() 메서드를 사용하여 기본 모드를 설정할 수 있습니다.

(2)fetchall() 메소드

코드는 다음과 같습니다

$result = $stmt ->fetchall();
foreach($result as $row){
echo $row[‘id’].’ ’;
echo $row[‘name’].’ ’;
echo $row[‘pass’].’
’;
}

Fetchall() 매개변수는 fetch()와 동일합니다.

8. 트랜잭션 처리

1. 자동 커밋 끄기(드라이버 속성 수정)

2. 트랜잭션 켜기

3. 자동 커밋 켜기

코드는 다음과 같습니다

$link = new PDO(‘mysql:host=localhost;dbname=lamp30’);
//1
$link->setattribute(PDO::ATTR_AUTOCOMMIT, false);
//2
$link->begintransaction();
$result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’);
//3
if($result){
$link->commit();
}else{
$link->rollback();
}
//4
$link->setattribute(PDO::ATTR_AUTOCOMMIT, true);

9. PDO 개체의 멤버 메서드

1. $link->getattribute(속성 이름): 드라이버 속성을 가져옵니다.

2. $link->setattribute(속성 이름, 속성 값): 드라이버 속성을 설정합니다.

1) Oracle은 빈 문자열을 NULL 값으로 반환하지만 다른 데이터베이스에는 이 기능이 없기 때문에 호환성을 높이기 위해 $link->setattribute(PDO::ATTR_ORACLE_NULLS,PDO::NULL_EMPTY_STRING,);

2 ) 오류를 표시하는 방법에는 정적, 경고 메시지, 예외

3가지가 있습니다. $link->errorcode(): 오류 코드를 가져옵니다.

1) setattribute 함수가 오류 표시 모드를 정적으로 설정하면 오류 발생 시 아무것도 표시되지 않습니다. 오류 번호를 보려면 이 함수를 호출해야 합니다.

4. $link->errorinfo(): 오류 정보(배열)를 가져옵니다.

1) setattribute 함수가 오류 표시 모드를 정적으로 설정하면 오류 발생 시 아무것도 표시되지 않습니다. 오류 메시지를 보려면 이 함수를 호출해야 합니다.

5. $link->lastinsertid(): 테이블에 삽입된 마지막 데이터의 기본 키 값을 가져옵니다(여러 데이터가 동시에 삽입된 경우 첫 번째 삽입된 행의 ID를 반환).

6、$link->prepare():发送准备的SQL语句,返回PDOStatement对象。

7、$link->begintransaction():打开事务。

8、$link->commit():提交一个事务,执行一个SQL。

9、$link->rollback():回滚一个事务。

十、错误模式

1、静态模式:

代码如下

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)

(1) 默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码。

(2) 查看错误可以调用errorCode()和errorInfo(),PDO和PDOStatement类都有这两个方法。

2、警告模式:

代码如下

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)

(1)此模式在设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING消息。

(2)这是mysql和mysqli显示错的方式。

3、异常模式:

代码如下

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

(1) 此模式在设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。

(2) 如果异常导致脚本终止,则事务将自动回滚。

(3) PDO推荐使用此模式。

十一、持久连接

代码如下

$link->setAttribute(PDO::ATTR_PERSISTENT, true);

持久连接即当脚本执行结束时不会自动断开连接,而且用$link->close()不能关闭连接。

위 내용은 PHP에서 pdo를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.