>데이터 베이스 >MySQL 튜토리얼 >PDO 객체를 생성하기 위해 다양한 방법으로 생성자를 호출합니다.

PDO 객체를 생성하기 위해 다양한 방법으로 생성자를 호출합니다.

黄舟
黄舟원래의
2017-05-20 17:19:011732검색

생성자를 다양한 방식으로 호출하여 PDO 객체를 생성할 수 있습니다

생성자를 다양한 방식으로 호출하여 PDO 객체를 생성할 수 있습니다. 다음은 MySQL과 Oracle을 연결하는 방법으로 서버를 예로 들어 다양한 호출 방법의 구축 방법을 소개하겠습니다.

1. 생성자에 매개변수 삽입

Oracle 서버에 연결하는 다음 예에서는 DSN 문자열에 OCI 드라이버를 로드합니다. 또한 프로그램은 두 개의 선택적 매개변수를 지정합니다. 첫 번째는 데이터베이스 이름이고 두 번째는 문자 집합입니다. 특정 문자 집합을 사용하여 특정 데이터베이스에 연결합니다. 정보가 지정되지 않으면 기본 데이터베이스가 사용됩니다. 코드는 다음과 같습니다.

<?php
try{
    $dbh = new PDO("OCI:dbname = accounts;charset=UTF8","scott","tiger");
}catch (PDOException $e){
    echo "数据库连接失败:".$e->getMessage();
}
?>

OCI:dbname=accounts는 PDO에게 OCI 드라이버를 사용해야 하며 "accounts" 데이터베이스를 사용해야 한다고 지시합니다. MySQL 드라이버의 경우 첫 번째 콜론 이후의 모든 내용이 MySQL DSN으로 사용됩니다. MySQL 서버에 연결할 때 표시되는 내용은 다음과 같습니다.

<?php
$dbms = "mysql";                                  // 数据库的类型
$dbName ="php_cn";                                //使用的数据库名称
$user = "root";                                   //使用的数据库用户名
$pwd = "root";                                    //使用的数据库密码
$host = "localhost";                              //使用的主机名称
$dsn  = "$dbms:host=$host;dbname=$dbName";
try {
    $pdo = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
}catch (PDOException $e){
   echo "数据库连接失败:".$e->getMessage();
}
?>

다른 드라이버도 DSN을 다른 방식으로 구문 분석합니다. 드라이버를 로드할 수 없거나 연결 실패가 발생하면 PDOException이 발생합니다. 당신은 실패를 처리하는 최선의 방법을 결정할 수 있습니다. try...catch 제어 구조를 생략해도 아무런 이점이 없습니다. 예외 처리가 애플리케이션의 상위 수준에서 정의되지 않은 경우 데이터베이스 연결을 설정할 수 없으면 스크립트가 종료됩니다.

2. 매개변수를 파일에 저장

PDO 객체를 생성할 때 DSN 문자열을 다른 로컬 또는 원격 위치 파일에 넣을 수 있습니다. 아래와 같이 생성자에서 이 파일을 참조합니다.

<?php
try{
    $dbh = new PDO(&#39;uri:file:///usr/localhost/dbconnect&#39;,&#39;webuser&#39;,&#39;password&#39;);
}catch(PDOException $e){
    echo &#39;连接失败:&#39;.$e->getMessage();
}
?>

/usr/localhost/dbconnect 파일의 DSN 드라이버가 변경되는 한 여러 데이터베이스 시스템 간에 전환할 수 있지만 파일의 소유자는 PHP 스크립트 실행을 담당하는 사용자이며 이 사용자에게 필요한 권한이 있습니다.

3. php.ini 파일 참조

또한 PHP 서버의 구성 파일에서 DSN 정보를 유지 관리할 수 있습니다. 이는 php.ini 파일에 있습니다. Zhongba DSN 정보는 pdo.dsn.aliasname이라는 구성 매개변수에 전달됩니다. 여기서 aliasname은 나중에 생성자에 제공될 DSN 별칭입니다. 아래와 같이 Oracle 서버에 연결합니다. php.ini에서 DSN에 지정된 별칭은 oraclepdo입니다.

【PDO】
pdo.dsn.oraclepdo = “OCI:dbname=//localhost:1521/mydb;chaset=UTF-8”;

Apaceh 서버를 다시 시작한 후 PHP 프로그램의 첫 번째 PDO 생성자에서 PDO 생성 메서드를 호출할 수 있습니다. . 아래와 같이 매개변수에 이 별칭을 사용합니다.

<?php
try{
    $dbh = new PDO(&#39;oraclepdo&#39;,&#39;scott&#39;,&#39;tiger&#39;);//使用php.ini文件中的oraclepdo 别名
}catch(PDOException $e){
    echo &#39;连接失败:&#39;.$e->getMessage();
}
?>

4. PDO 연결 관련 옵션

PDO 객체를 생성할 때, 데이터베이스 연결과 관련된 일부 옵션의 경우 필요한 옵션을 생성자의 네 번째 매개변수인 Driver_opts에 배열로 전달하여 추가 튜닝 매개변수를 PDO 또는 기본 드라이버에 전달할 수 있습니다. 몇 가지 일반적인 사용 옵션은 표에 나와 있습니다.

选项名 描述
PDO::ATTR_AUTOCOMMIT 确定PDO是否关闭自定提交功能,设置FALSE值时关闭
PDO::ATTR_CASE 强制PDO获取的表字段字符的大小转换,或远原样使用列信息
PDO::ATTR_ERRMODE 设置错误处理的模式
PDO::ATTR_PERSISTENT 确定连接是否为持久连接,默认值为FALSE
PDO::ATTR_ORACCLE_NULLS 将返回的空字符串转换为SQL的NULL
PDO::ATTR_PREFETCH 设置应用程序提前获取的数据大小,以K字节单位
PDO::ATTR_TIMEOUT 设置超市之前等待的时间(秒数)
PDO::ATTR_SERVER_INFO 包含与数据库特有的服务器信息
PDO::ATTR_SERVER_VERSION 包含与数据库服务器版本号有关的信息
PDO::ATTR_CLIENT_VERSION 包含与数据库客户端版本号有关的信息
PDO::ATTR_CONNECTION_STATUS 包含数据库特有的与连接状态有关的信息

设置选项名为下表组成的关联数组,作为驱动程序特定的连接选项,传递给PDO构造方法的第四各参数中,在下面的实例中使用连接选项创建持久连接,持久连接的好处是能够避免在每个页面执行到打开和关闭数据库服务器连接,速度更快,如 MySQL数据库的一个进程创建了两个连接,PHP则会把原有连接与新的连接合并共享为一个连接,代码如下:

<?php
$opt = array(PDO::ATTR_PERSISTENT =>true);
try{
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;,&#39;dbuser&#39;,&#39;password&#39;,$opt); //使用$opt参数
}catch(PDOException $e){
    echo &#39;连接失败:&#39;.$e->getMessage();
}
?>

以上就是关于以多种方式调用构造方法创建PDO对象的所有内容,小伙伴们都理解了吗?可以在自己本地试一试!

위 내용은 PDO 객체를 생성하기 위해 다양한 방법으로 생성자를 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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