- <?php
- $hostname = "localhost";
- $database = "test_db";
- $username = "root";
- $password = "0000";
- /* DSN :
- mysql:host=localhost;port=3307;dbname=testdb;unix_socket=/tmp/mysql.sock;
- pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass;
- mssql:host=localhost;dbname=testdb
- sybase:host=localhost;dbname=testdb
- dblib:host=localhost;dbname=testdb
- odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=localhost;PORT=50000;DATABASE=SAMPLE;PROTOCOL=TCPIP;UID=db2inst1;PWD=ibmdb2;
- odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin;
- ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;
- oci:dbname=192.168.10.145/orcl;charset=CL8MSWIN1251
- sqlite:/opt/databases/mydb.sq3
- sqlite::memory:
- sqlite2:/opt/databases/mydb.sq2
- sqlite2::memory:
- */
- $dsn="mysql:host=$hostname;dbname=$database";
- try {
- $DB_Link = new PDO($dsn, $username,$password
- /*,array(
- PDO::ATTR_PERSISTENT => true, // 開啟 DB 長連接
- PDO::MYSQL_ATTR_INIT_COMMAND => // MySQL 前置設定
- "SET NAMES 'utf8'; SET group_concat_max_len=65536;",
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>false // MySQL 查詢緩衝區
- )*/
- );
- } catch (PDOException $e) {
- // 資料庫連結失敗
- $e->errorInfo ; // 錯誤明細
- $e->getMessage(); // 返回異常資訊
- $e->getPrevious(); // 返回前一個異常
- $e->getCode(); // 返回異常程式碼
- $e->getFile(); // 返回發生異常的檔案名
- $e->getLine(); // 返回發生異常的程式碼行號
- $e->getTrace(); // backtrace() 陣列
- $e->getTraceAsString(); // 已格成化成字串的 getTrace() 資訊
- // 錯誤處理...
- }
- /*
- PDO::ATTR_CASE: 返回的資料欄位名稱設定
- PDO::CASE_LOWER: 欄位名稱全部轉換成小寫
- PDO::CASE_NATURAL: 使用原始欄位名稱(預設)
- PDO:: CASE_UPPER: 欄位名稱全部轉換成大寫
- */
- //$DB_Link->setAttribute(PDO::ATTR_CASE,PDO::CASE_NATURAL);
- /*
- PDO::ATTR_ERRMODE: 錯誤報告
- PDO::ERRMODE_SILENT: 不顯示錯誤信息,只顯示錯誤碼。
- PDO::ERRMODE_WARNING: 顯示警告跟錯誤。
- PDO::ERRMODE_EXCEPTION: 拋出異常。
- */
- $DB_Link->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
- /*
- PDO::ATTR_ORACLE_NULLS : 轉換無效的空字串
- PDO::NULL_NATURAL: 不轉換(預設)。
- PDO::NULL_EMPTY_STRING: 空字串轉換為 NULL。
- PDO::NULL_TO_STRING: NULL 轉換為空字串。
- */
- //$DB_Link->setAttribute(PDO::ATTR_ORACLE_NULLS,PDO::NULL_NATURAL);
- /*
- PDO::ATTR_STRINGIFY_FETCHES:
- Convert numeric values to strings when fetching. Requires bool.
- */
- //$DB_Link->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- /*
- PDO::ATTR_STATEMENT_CLASS: 變更預設 PDOStatement Class
- */
- //class DBStatement extends PDOStatement {}
- //$DB_Link->setAttribute(PDO::ATTR_STATEMENT_CLASS,
- // array('DBStatement', array($DB_Link))
- //);
- /*
- PDO::ATTR_AUTOCOMMIT: 自動啟動交易處理
- 在設置成true的時候,PDO會自動嘗試停止接受委託,開始執行
- */
- //$DB_Link->setAttribute(PDO::ATTR_AUTOCOMMIT,true);
- // 設定存取的編碼方式
- $DB_Link->exec("SET NAMES 'utf8';");
- // 設定 GROUP_CONCAT 的最大長度
- $DB_Link->exec("SET group_concat_max_len=65536;");
- // 關閉查詢快取
- //$DB_Link->exec("SET SESSION query_cache_type=OFF;");
參考來源:
PHP: PDO Drivers - Manual
PHP: PDO::__construct - Manual
PHP: PDOException - Manual
PHP: PDO::setAttribute - Manual
牛刀小小試 PHP5中PDO的簡單使用
0 回應:
張貼留言