以多種方式呼叫建構方法建立PDO物件
可以以多種昂方式調建構方法建立PDO對象,以下以連接MySQL 和 Oracle伺服器為例,分別介紹構造方法的多種呼叫方式。
一、將參數嵌入到建構子
#在下面的連接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 控制結構並無裨益,如果在應用程式的較高層級沒有定義異常處理,那麼在無法建立資料庫連線的情況下,該腳本會終止。
二、將參數存放在檔案中
#在建立PDO物件時,可以把DSN字串放在另一個本地或遠端文件中,並在建構函式中引用這個文件,如下所示:
<?php try{ $dbh = new PDO('uri:file:///usr/localhost/dbconnect','webuser','password'); }catch(PDOException $e){ echo '连接失败:'.$e->getMessage(); } ?>
只要將文件/usr/localhost/dbconnect中的DSN驅動改變,就可以在多種資料庫系統之間切換,但是確保該檔案由負責執行PHP腳本的使用者所擁有,而且此使用者擁有必要的權限。
三、引用php.ini檔案
也可以在PHP伺服器的設定檔中維護DSN信息,只要在php.ini文件中吧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建構方法時,在第一個參數中使用這個別名,如下所示:
<?php try{ $dbh = new PDO('oraclepdo','scott','tiger');//使用php.ini文件中的oraclepdo 别名 }catch(PDOException $e){ echo '连接失败:'.$e->getMessage(); } ?>
四、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('mysql:host=localhost;dbname=test','dbuser','password',$opt); //使用$opt参数 }catch(PDOException $e){ echo '连接失败:'.$e->getMessage(); } ?>
以上就是关于以多种方式调用构造方法创建PDO对象的所有内容,小伙伴们都理解了吗?可以在自己本地试一试!
以上是以多種方式呼叫建構方法建立PDO對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!