明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

以多種方式調用構造方法創(chuàng)建PDO對象

[摘要]以多種方式調用構造方法創(chuàng)建PDO對象可以以多種昂方式調構造方法創(chuàng)建PDO對象,下面以連接MySQL 和 Oracle 服務器為例,分別介紹構造方法的多種調用方式。一、將參數(shù)嵌入到構造函數(shù)在下面的連接Oracle 服務器的示例中,在DSN字符串中加載OCI驅動程序并指定里兩個可選參數(shù):第一個是數(shù)據(jù)...
以多種方式調用構造方法創(chuàng)建PDO對象

可以以多種昂方式調構造方法創(chuàng)建PDO對象,下面以連接MySQL 和 Oracle 服務器為例,分別介紹構造方法的多種調用方式。

一、將參數(shù)嵌入到構造函數(shù)

在下面的連接Oracle 服務器的示例中,在DSN字符串中加載OCI驅動程序并指定里兩個可選參數(shù):第一個是數(shù)據(jù)庫名稱,第二個是字符集。使用了特定的字符集連接一個特定的數(shù)據(jù)庫,如果不指定任何信息就會使用默認的數(shù)據(jù)庫。代碼如下:

<?php
try{
    $dbh = new PDO("OCI:dbname = accounts;charset=UTF8","scott","tiger");
}catch (PDOException $e){
    echo "數(shù)據(jù)庫連接失敗:".$e->getMessage();
}
?>

OCI:dbname = accounts告訴PDO它應該使用 OCI驅動程序,并且應該使用“accounts”數(shù)據(jù)庫。對于MySQL驅動程序,第一個冒號后面的所有內容都將會被用作MySQL的DSN。連接MySQL 服務器的顯示如下:

<?php
$dbms = "mysql";                                  // 數(shù)據(jù)庫的類型
$dbName ="php_cn";                                //使用的數(shù)據(jù)庫名稱
$user = "root";                                   //使用的數(shù)據(jù)庫用戶名
$pwd = "root";                                    //使用的數(shù)據(jù)庫密碼
$host = "localhost";                              //使用的主機名稱
$dsn  = "$dbms:host=$host;dbname=$dbName";
try {
    $pdo = new PDO($dsn, $user, $pwd);//初始化一個PDO對象,就是創(chuàng)建了數(shù)據(jù)庫連接對象$pdo
}catch (PDOException $e){
   echo "數(shù)據(jù)庫連接失敗:".$e->getMessage();
}
?>

其他的驅動程序會同樣以不同的方式解析它的DSN,如果無法加載驅動程序,或者發(fā)生了連接失敗,則會拋出一個PDOException,以便您可以決定如何最好的處理該故障。省略try...catch 控制結構并無裨益,如果在應用程序的較高級別沒有定義異常處理,那么在無法建立數(shù)據(jù)庫連接的情況下,該腳本會終止。

二、將參數(shù)存放在文件中

在創(chuàng)建PDO對象時,可以把DSN字符串放在另一個本地或者遠程文件中,并在構造函數(shù)中引用這個文件,如下所示:

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

只要將文件/usr/localhost/dbconnect中的DSN驅動改變,就可以在多種數(shù)據(jù)庫系統(tǒng)之間切換,但是確保該文件由負責執(zhí)行PHP腳本的用戶所擁有,而且此用戶擁有必要的權限。

三、引用 php.ini文件

也可以在PHP服務器的配置文件中維護DSN信息,只要在php.ini文件中吧DSN信息付給一個名為 pdo.dsn.aliasname 的配置參數(shù),這里 aliasname 是后面將提供給構造函數(shù)的DSN別名。如下所示連接Oracle 服務器,在php.ini中為DSN指定的別名為 oraclepdo:

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

重新啟動 Apaceh服務器后,就可以在php程序中,調用PDO構造方法時,在第一個參數(shù)中使用這個別名,如下所示:

<?php
try{
    $dbh = new PDO('oraclepdo','scott','tiger');//使用php.ini文件中的oraclepdo 別名
}catch(PDOException $e){
    echo '連接失。'.$e->getMessage();
}
?>

四、PDO與連接有關的選項

在創(chuàng)建PDO對象時,有一些與數(shù)據(jù)庫連接有關選項,可以將必要的幾個選項組成數(shù)組傳遞給構造方法的第四個參數(shù) driver_opts中,用來傳遞附加的調優(yōu)參數(shù)到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設置應用程序提前獲取的數(shù)據(jù)大小,以K字節(jié)單位
PDO::ATTR_TIMEOUT設置超市之前等待的時間(秒數(shù))
PDO::ATTR_SERVER_INFO包含與數(shù)據(jù)庫特有的服務器信息
PDO::ATTR_SERVER_VERSION包含與數(shù)據(jù)庫服務器版本號有關的信息
PDO::ATTR_CLIENT_VERSION包含與數(shù)據(jù)庫客戶端版本號有關的信息
PDO::ATTR_CONNECTION_STATUS包含數(shù)據(jù)庫特有的與連接狀態(tài)有關的信息

設置選項名為下表組成的關聯(lián)數(shù)組,作為驅動程序特定的連接選項,傳遞給PDO構造方法的第四各參數(shù)中,在下面的實例中使用連接選項創(chuàng)建持久連接,持久連接的好處是能夠避免在每個頁面執(zhí)行到打開和關閉數(shù)據(jù)庫服務器連接,速度更快,如 MySQL數(shù)據(jù)庫的一個進程創(chuàng)建了兩個連接,PHP則會把原有連接與新的連接合并共享為一個連接,代碼如下:

<?php
$opt = array(PDO::ATTR_PERSISTENT =>true);
try{
    $dbh = new PDO('mysql:host=localhost;dbname=test','dbuser','password',$opt); //使用$opt參數(shù)
}catch(PDOException $e){
    echo '連接失敗:'.$e->getMessage();
}
?>

以上就是關于以多種方式調用構造方法創(chuàng)建PDO對象的所有內容,小伙伴們都理解了嗎?可以在自己本地試一試!

以上就是以多種方式調用構造方法創(chuàng)建PDO對象的詳細內容,更多請關注php中文網(wǎng)其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。