> 백엔드 개발 > PHP 문제 > PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?

PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-03-13 14:56:02
원래의
2251명이 탐색했습니다.

이전 글에서 "PHP 데이터베이스 학습을 위한 PDO 오류 처리 방법은?"을 가져왔습니다. 》에서는 PHP의 PDO 오류 처리 관련 지식을 자세히 소개합니다. 이 기사에서는 PHP에서 PDO 속성을 설정하고 얻는 방법을 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다!

PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?

이전 글에서는 PHP의 PDO 오류 처리와 관련된 문제에 대해 알아본 다음, PDO 속성을 설정하고 가져오는 방법을 알아보겠습니다. PDO 개체에는 PDO의 동작을 조정하거나 기본 드라이버 상태를 얻는 데 사용할 수 있는 많은 속성이 있습니다.

PDO 객체 생성 시 생성자의 마지막 매개변수에 속성 ​​옵션이 설정되지 않은 경우 객체 생성 후 PDO 객체에서 setAttribute()getAttribute를 사용할 수 있습니다. () 메서드는 이러한 속성의 값을 설정하고 가져옵니다. 그럼 이 두 가지 방법을 함께 살펴보도록 하겠습니다. setAttribute()getAttribute() 方法设置和获取这些属性的值。那接下来就让我们一起来了解一下这两个方法吧。

<strong><span style="font-size: 20px;">getAttribute()</span></strong> 方法

getAttribute() 方法只需要提供一个参数,就能够传递一个代表这个参数的特定属性名称,执行成功后会返回该属性所指定的值,否则返回 NULL。很容易理解,它的语法格式如下:

PDO::getAttribute(int $attribute)
로그인 후 복사

其中需要注意的是:

参数 $attribute PDO::ATTR_* 常量中的一个,应用到数据库连接中的常量有很多,

我们先通过示例先看一下,然后在做总结,示例如下:

<?php
    header("Content-Type: text/html;charset=utf-8");
    $opt = [PDO::ATTR_PERSISTENT=>TRUE];
    try{
        $pdo = new PDO(&#39;mysql:dbname=test;host=127.0.0.1&#39;,&#39;root&#39;,&#39;root&#39;,$opt);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e->getMessage();
        exit();
    }
    echo &#39;PDO 是否关闭自动提交功能:&#39;.$pdo -> getAttribute(PDO::ATTR_AUTOCOMMIT);
    echo &#39;<br>当前 PDO 的错误处理模式:&#39;.$pdo -> getAttribute(PDO::ATTR_ERRMODE);
    echo &#39;<br>表字段字符的大小写转换:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
    echo &#39;<br>空字符串转换为 SQL 的 null:&#39;.$pdo -> getAttribute(PDO::ATTR_ORACLE_NULLS);
    echo &#39;<br>应用程序提前获取数据大小:&#39;.$pdo -> getAttribute(PDO::ATTR_PERSISTENT);
?>
로그인 후 복사

输出结果:

PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?

由上述结果,我们总结一下:

PDO::ATTR_AUTOCOMMIT表示的是PDO 是否关闭自动提交功能,PDO::ATTR_ERRMODE表示的是当前 PDO 的错误处理模式,PDO::ATTR_CASE表示的是表字段字符的大小写转换, PDO::ATTR_ORACLE_NULLS表示的是空字符串转换为 SQL 的 null,PDO::ATTR_PERSISTENT表示的是应用程序提前获取数据大小。

不止这些,再给大家总结一下一些常用的应用到数据库连接中的常量:

  • PDO::ATTR_CONNECTION_STATUS 表示与连接状态相关的特有信息。

  • PDO::ATTR_SERVER_INFO 表示数据库特有的服务器信息。

  • PDO::ATTR_SERVER_VERSION 表示数据库服务器版本号。

  • PDO::ATTR_CLIENT_VERSION 表示数据库客户端版本号。

了解了getAttribute() 方法,接下来我们来看一下setAttribute() 方法的相关知识,一起看看吧。

<strong><span style="font-size: 20px;">setAttribute()</span></strong> 方法

setAttribute() 方法可以用来设置数据库句柄的属性,setAttribute() 就比getAttribute()要稍微复杂些了,它的语法格式如下:

PDO::setAttribute(int $attribute, mixed $value)
로그인 후 복사

其中我们需要注意的是:

这个方法需要两个参数,第一个参数 $attribute 提供 PDO 对象特定的属性名,第二个参数 $value 则是为这个指定的属性赋一个值。

PDO::ATTR_CASE 表示可以强制列名为指定的大小写,其中PDO::CASE_LOWER 表示强制列名小写;PDO::CASE_NATURAL 表示保留数据库驱动返回的列名;PDO::CASE_UPPER 表示强制列名大写。

PDO::ATTR_ERRMODE 表示为错误报告,其中PDO::ERRMODE_SILENT 表示为仅设置错误代码;PDO::ERRMODE_WARNING 表示为引发 E_WARNING 错误;PDO::ERRMODE_EXCEPTION 表示为抛出 exceptions 异常。

PDO::ATTR_ORACLE_NULLS

<strong><span style="font-size: 20px;">getAttribute()</span></strong>메서드

getAttribute() 메서드는 하나의 매개변수만 제공하면 되며 이 매개변수를 나타내는 특정 속성 이름을 전달할 수 있습니다. 성공적으로 실행되면 속성 이름 지정된 값이 반환되고, 그렇지 않으면 NULL이 반환됩니다. 구문 형식은 다음과 같습니다.

<?php
    header("Content-Type: text/html;charset=utf-8");
    $pdo = new PDO(&#39;mysql:dbname=test;host=127.0.0.1&#39;,&#39;root&#39;,&#39;root&#39;,$opt);
    $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
    echo &#39;PDO::ATTR_CASE属性的值为:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
    $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
    echo &#39;<br>PDO::ATTR_CASE属性的值为:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
    $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
    echo &#39;<br>PDO::ATTR_CASE属性的值为:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
?>
로그인 후 복사

주의해야 할 사항은 다음과 같습니다.

매개변수 $attributePDO::ATTR_* 중 하나입니다. code> 상수, 적용 데이터베이스 연결에는 많은 상수가 있습니다. <img src="https://img.php.cn/upload/image/950/586/449/1635413103548982.png" title="1635413103548982.png" alt="PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?">

먼저 예제를 살펴보고 요약해 보겠습니다.

rrreee

출력 결과: 🎜🎜🎜PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?🎜🎜위 결과에서 요약하면 다음과 같습니다.🎜🎜 PDO::ATTR_AUTOCOMMIT 는 PDO가 자동 제출 기능을 끄는지 여부를 나타내고, PDO::ATTR_ERRMODE는 현재 PDO 오류 처리 모드를 나타냅니다. PDO::ATTR_CASE는 필드 문자의 테이블 대소문자 변환을 나타내고, PDO::ATTR_ORACLE_NULLS는 빈 문자열을 SQL null로 변환하고, PDO::ATTR_PERSISTENT는 데이터를 얻기 위한 응용 프로그램을 나타냅니다. 미리 크기. 🎜🎜🎜그 외에도 데이터베이스 연결에 적용되는 일반적으로 사용되는 몇 가지 상수를 요약하겠습니다. 🎜
  • 🎜PDO::ATTR_CONNECTION_STATUS 연결 상태와 관련된 고유 정보를 나타냅니다. 🎜
  • 🎜PDO::ATTR_SERVER_INFO는 데이터베이스별 서버 정보를 나타냅니다. 🎜
  • 🎜PDO::ATTR_SERVER_VERSION은 데이터베이스 서버 버전 번호를 나타냅니다. 🎜
  • 🎜PDO::ATTR_CLIENT_VERSION은 데이터베이스 클라이언트 버전 번호를 나타냅니다. 🎜
🎜이제 getAttribute() 메소드를 이해했으니, setAttribute() 메소드에 대한 관련 지식을 함께 살펴보겠습니다. 🎜🎜<strong><span style="font-size: 20px;">setAttribute()</span></strong>메소드🎜🎜setAttribute() 이 메소드는 데이터베이스 핸들의 속성을 설정하는 데 사용할 수 있습니다. setAttribute()는 getAttribute()보다 약간 더 복잡합니다. 구문 형식은 다음과 같습니다. 🎜rrreee🎜주의해야 할 사항은 다음과 같습니다. 🎜🎜🎜이 메서드에는 두 개의 매개 변수가 필요합니다. 첫 번째 매개 변수 $attribute는 PDO 개체의 특정 속성 이름을 제공합니다. 두 번째 매개변수 $value는 지정된 속성에 값을 할당합니다. 🎜🎜PDO::ATTR_CASE는 열 이름이 지정된 대소문자를 따르도록 강제할 수 있음을 의미합니다. 여기서 PDO::CASE_LOWER는 열 이름이 소문자로 강제됨을 의미합니다. 데이터베이스 드라이버가 반환한 이름은 유지됩니다. PDO: :CASE_UPPER는 열 이름을 대문자로 지정하는 것을 의미합니다. 🎜🎜PDO::ATTR_ERRMODE는 오류 보고서를 나타냅니다. 여기서 PDO::ERRMODE_SILENT는 오류 코드 설정만을 나타내고 PDO::ERRMODE_WARNING은 E_WARNING 오류 발생을 나타냅니다. 🎜🎜PDO::ATTR_ORACLE_NULLS는 Oracle에 국한되지 않고 모든 드라이버에서 사용 가능한 것으로 표현되며, NULL 및 빈 문자열을 변환합니다. 여기서 PDO::NULL_NATURAL은 변환하지 않는 것으로 표현됩니다. 빈 문자열을 NULL로 변환한다는 것은 PDO::NULL_TO_STRING이 NULL을 빈 문자열로 변환한다는 것을 의미합니다. 🎜🎜다음으로, setAttribute() 메소드를 사용하여 데이터베이스 핸들의 속성을 설정하는 예를 들어보겠습니다. 🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜🎜위 예에서는 데이터베이스가 설정되었습니다. setAttribute() 메소드를 사용하여 핸들의 속성을 사용합니다. 다음으로 사용 가능한 공통 속성 이름과 사용할 수 있는 값을 정리하겠습니다. 🎜
  • PDO::ATTR_STRINGIFY_FETCHES는 추출 시 값을 문자열로 변환하는 것을 의미합니다. PDO::ATTR_STRINGIFY_FETCHES    表示提取的时候将数值转换为字符串;

  • PDO::ATTR_STATEMENT_CLASS   表示设置从 PDOStatement 派生的用户提供的语句类。不能用于持久的 PDO 实例。

  • PDO::ATTR_AUTOCOMMIT   表示是否自动提交每个单独的语句,它在在 OCI,Firebird 以及 MySQL 中可用。

  • PDO::ATTR_DEFAULT_FETCH_MODE   表示设置默认的提取模式。

  • PDO::MYSQL_ATTR_USE_BUFFERED_QUERY   表示使用缓冲查询,它在MySQL数据库中可用。

其中我们还需要注意的有:PDO::ATTR_TIMEOUT 表示指定超时的秒数。不同驱动之间可能会有差异,比如 SQLite 等待的时间达到此值后就会放弃获取可写锁,但其他驱动可能会将此值解释为一个连接或读取超时的间隔;

PDO::ATTR_EMULATE_PREPARES

PDO::ATTR_STATEMENT_CLASS는 PDOStatement에서 파생된 사용자를 설정하는 것을 의미합니다. 문 클래스를 제공했습니다. 영구 PDO 인스턴스와 함께 사용할 수 없습니다.

PDO::ATTR_AUTOCOMMIT 각 개별 명세서를 자동으로 제출할지 여부를 나타냅니다. OCI, Firebird 및 MySQL에서 사용할 수 있습니다. 🎜🎜🎜PDO::ATTR_DEFAULT_FETCH_MODE 는 기본 추출 모드를 설정하는 것을 의미합니다. 🎜🎜🎜PDO::MYSQL_ATTR_USE_BUFFERED_QUERY는 MySQL 데이터베이스에서 사용할 수 있는 버퍼링된 쿼리를 사용하는 것을 의미합니다. 🎜🎜다음 사항에도 주의해야 합니다. PDO::ATTR_TIMEOUT은 지정된 시간 초과의 초 수를 나타냅니다. 예를 들어, SQLite는 이 값을 기다린 후 쓰기 가능한 잠금 획득을 포기하지만 다른 드라이버는 이 값을 연결 또는 읽기 시간 초과 간격으로 해석할 수 있습니다. 🎜🎜 PDO::ATTR_EMULATE_PREPARES 준비된 문의 시뮬레이션 활성화 또는 비활성화를 나타냅니다. 일부 드라이버는 로컬 전처리를 지원하지 않거나 제한적으로 지원합니다. 이 설정을 사용하면 PDO가 항상 준비된 문을 에뮬레이트하거나 로컬 준비된 문을 사용하도록 할 수 있습니다. 드라이버가 현재 쿼리를 성공적으로 준비할 수 없는 경우 항상 준비된 문 시뮬레이션으로 대체됩니다. 🎜🎜관심이 있으시면 "🎜PHP 비디오 튜토리얼🎜"을 클릭하여 PHP 지식에 대해 자세히 알아볼 수 있습니다. 🎜

위 내용은 PHP 데이터베이스 학습에서 PDO 속성을 설정하고 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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