tag:blogger.com,1999:blog-59465307047421309702024-03-06T16:20:07.273+08:00Jax 的工作紀錄除了在整理學習上的經驗,同時也能幫助其他需要的人Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-5946530704742130970.post-85221825939894050832013-04-04T22:05:00.000+08:002013-04-04T22:06:05.258+08:00PDO fetch 模式的回傳結果PDO 的 fetch 模式功能實在是太方便了,但每次要產生想要的結果都要試太麻煩了,這裡列出可能的組合。<br />
<br />
<pre class="php" name="code"><?php
$dbAdapter = new PDO("mysql:host=localhost;dbname=test", "root", "1234");
$dbAdapter->exec("SET NAMES 'utf8';");
$data = $dbAdapter->query("
SELECT id, name, method FROM category
")->fetchAll(PDO::FETCH_ASSOC);
//var_dump($data);
/*
array(
array(
'id' => '1',
'name' => 'HBO',
'method' => 'service',
),
array(
'id' => '2',
'name' => '本週新片',
'method' => 'movie',
),
array(
'id' => '3',
'name' => '熱映中',
'method' => 'movie',
),
)
*/
$data = $dbAdapter->query("
SELECT name, method FROM category
")->fetchAll(PDO::FETCH_COLUMN);
//var_dump($data);
/*
array(
'HBO',
'本週新片',
'熱映中',
)
*/
$data = $dbAdapter->query("
SELECT id, name, method FROM category
")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);
//var_dump($data);
/*
array(
'1' => array(
'name' => 'HBO',
'method' => 'service',
),
'2' => array(
'name' => '本週新片',
'method' => 'movie',
),
'3' => array(
'name' => '熱映中',
'method' => 'movie',
),
)
*/
$data = $dbAdapter->query("
SELECT method, id, name FROM category
")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);
//var_dump($data);
/*
array(
'service' => array(
'id' => '1',
'name' => 'HBO',
),
'movie' => array(
'id' => '3',
'name' => '熱映中',
),
)
*/
$data = $dbAdapter->query("
SELECT id, name, method FROM category
")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN);
//var_dump($data);
/*
array(
'1' => 'HBO',
'2' => '本週新片',
'3' => '熱映中',
)
*/
$data = $dbAdapter->query("
SELECT method, name, id FROM category
")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN);
//var_dump($data);
/*
array(
'service' => 'HBO',
'movie' => '熱映中',
)
*/
$data = $dbAdapter->query("
SELECT method, id, name FROM category
")->fetchAll( PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
//var_dump($data);
/*
array(
'service' => array(
array(
'id' => '1'
'name' => 'HBO'
),
)
'movie' => array(
array(
'id' => '2'
'name' => '本週新片'
),
array(
'id' => '3'
'name' => '熱映中'
),
)
)
*/
$data = $dbAdapter->query("
SELECT method, name, id FROM category
")->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_COLUMN);
//var_dump($data);
/*
array(
'service' => array(
'HBO'
),
'movie' => array(
'本週新片'
'熱映中'
),
)
*/
$data = $dbAdapter->query("
SELECT id, name, method FROM category
")->fetchAll(PDO::FETCH_OBJ);
//var_dump($data);
/*
array(
stdClass{
public $id = '1';
public $name = 'HBO';
public $method = 'service';
},
stdClass{
public $id = '2';
public $name = '本週新片';
public $method = 'movie';
},
stdClass{
public $id = '3';
public $name = '熱映中';
public $method = 'movie';
},
)
*/
class Category_1 {}
$data = $dbAdapter->query("
SELECT id, name, method FROM category
")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_1");
//var_dump($data);
/*
array(
Category_1{
public $id = '1';
public $name = 'HBO';
public $method = 'service';
},
Category_1{
public $id = '2';
public $name = '本週新片';
public $method = 'movie';
},
Category_1{
public $id = '3';
public $name = '熱映中';
public $method = 'movie';
},
),
*/
class Category_2 {
public $name;
public $method;
public function __construct() {}
public function __set($name, $value ){}
}
$data = $dbAdapter->query("
SELECT id, name, method FROM category
")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_2");
//var_dump($data);
/*
array(
Category_2{
public $name = 'HBO';
public $method = 'service';
},
Category_2{
public $name = '本週新片';
public $method = 'movie';
},
Category_2{
public $name = '熱映中';
public $method = 'movie';
},
)
*/
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-7912197072555984552012-03-07T14:06:00.002+08:002013-06-10T22:40:22.436+08:00[Ubuntu] 安裝 Oracle Client 與 PDO_OCI於 <a target="_blank" href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html">Oracle Database Instant Client</a> 下載 Client/SDK <br />
(Version 10.2.0.4 Instant Client Package - Basic, Instant Client Package - SDK)<br />
<strong>oracle-instantclient-basic-10.2.0.4-1.i386.rpm</strong><br />
<strong>oracle-instantclient-devel-10.2.0.4-1.i386.rpm</strong><br />
<br />
<pre class="sh" name="code"># 安裝套件轉換器
apt-get install alien
# 轉換 rpm 套件到 deb,並安裝
alien -i oracle-instantclient-basic*.rpm
alien -i oracle-instantclient-devel*.rpm
# 安裝 Apache2,PHP,MySQL
apt-get install apache2 php5 mysql-server php5-mysql libapache2-mod-php5
# 安裝 PEAR
apt-get install php-pear php5-dev dh-make-php make re2c
# 下載 PDO_OCI 原始檔
pecl download pdo
pecl download pdo_oci
tar zxvf PDO-1.0.3.tgz
tar zxvf PDO_OCI-1.0.tgz
mkdir -p PDO_OCI-1.0/include/php/ext/
mv PDO-1.0.3 PDO_OCI-1.0/include/php/ext/pdo
cd PDO_OCI-1.0/
phpize
./configure --with-pdo-oci=instantclient,/usr,10.2.0.4
make -j$(grep processor /proc/cpuinfo |wc -l)
make install # /usr/lib/php5/20xxxxxx+lfs/pdo_oci.so
vim /etc/php5/conf.d/pdo_oci.ini # 建立 pdo_oci.ini, 內容如下:
extension=pdo_oci.so
vim /etc/apache2/envvars # 在最後面加入環境變數, 內容如下:
export NLS_LANG="TRADITIONAL CHINESE_TAIWAN.UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
# 重新啟動 Apache
service apache2 restart
</pre><br />
參考來源:<br />
<a target="_blank" href="http://blog.longwin.com.tw/2008/06/debian_php_oracle_ext_pdo_oci_2008/">Debian 安裝設定 PHP 連 Oracle extension 使用 PDO(PDO_OCI)</a><br />
<a target="_blank" href="https://help.ubuntu.com/community/Oracle%20Instant%20Client">Oracle Instant Client</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-28242200963367864992011-04-19T09:54:00.000+08:002012-02-12T23:32:39.084+08:00[Oracle] PDO-OCI 的 DSN 連接字串最近重裝我的開發環境,結果連 oracle 一直連不上,出現了以下幾種訊息,最後是因為我的 TNS listener 沒設好,或是我的 DSN 錯誤,整理出我試過的幾個 DSN 連接字串:<br />
<br />
ORA-12154: TNS:could not resolve service name<br />
ORA-06401: NETCMN: invalid driver designator<br />
ORA-12514: TNS:listener could not resolve SERVICE_NAME<br />
ORA-12505: TNS:listener could not resolve SID given in connect descriptor<br />
<br />
<pre class="php" name="code">$DSN="oci:dbname=jaxdb;charset=utf-8";
$DSN="oci:dbname=127.0.0.1:1521/jaxdb;charset=utf-8";
$DSN = "oci:dbname=(
DESCRIPTION = (
ADDRESS_LIST = (
ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)
)
)(CONNECT_DATA=
(SID = jaxdb)
)
);charset=utf8";
$DSN = "oci:dbname=(
DESCRIPTION = (
ADDRESS_LIST = (
ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)
)
)(CONNECT_DATA=
(SERVICE_NAME = jaxdb)
)
);charset=utf8";
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-18302119090022687892009-11-01T16:14:00.010+08:002012-02-12T23:37:02.270+08:00[PHP] 繼承改寫 PDO根據過去對 PDO 的使用習慣<br />我從新改寫跟簡化一些函數<br />基本上跟原本的沒有差太多<br /><br />物件宣告:<br /><pre class="php" name="code"><br /><?php<br /><br />/*改寫資料連結物件*/<br />class DB extends PDO {<br /><br /> /* 預設的資料取得格式 */<br /> protected static $_fetch_mode = self :: FETCH_ASSOC;<br /><br /> /**<br /> * @param array $conf<br /> * [host] = "localhost"<br /> * [username] = "root"<br /> * [password] = "1111"<br /> * [dbname] = "test"<br /> * [init] = "SET NAMES 'utf8'; SET group_concat_max_len=65536;"<br /> * <br /> * @return class<br /> */<br /> public function __construct(array $conf){<br /> parent :: __construct(<br /> 'mysql:host='.$conf['host'].';dbname='.$conf['dbname'], <br /> $conf['username'], <br /> $conf['password']<br /> );<br /><br /> /* MySQL 前置設定 */<br /> foreach($conf['init'] as $query){<br /> parent :: exec($query);<br /> }<br /><br /> /*以例外方式處理錯誤*/<br /> $this->setAttribute(<br /> self :: ATTR_ERRMODE, <br /> self :: ERRMODE_EXCEPTION<br /> );<br /> <br /> /*改寫資料流物件*/<br /> $this->setAttribute(<br /> self :: ATTR_STATEMENT_CLASS, <br /> array ('DBStatement',array (<br /> $this<br /> )<br /> ));<br /> }<br /><br /><br /> /**===============================================================**/<br /> /* 將字串加入引號及反斜線 */<br /> public function quote($var = null){<br /> if(is_array($var)){<br /> foreach ($var as $key => $value) {<br /> $var[$key] = parent :: quote($value);<br /> }<br /> return join(',', $var);<br /><br /> }elseif($var === null){<br /> return 'NULL';<br /> }else{<br /> return parent :: quote($var);<br /> }<br /> }<br /><br /> /* 將 $query 字串與陣列做變數合併 */<br /> public function bind($query, array $bind = array ()){<br /> foreach($bind as $key => $value){<br /> if ($key[0] == '/' && $key[1] == '*') {<br /> continue;<br /> }<br /><br /> $bind[$key] = $this->quote($value);<br /> }<br /><br /> return strtr($query, $bind);<br /> }<br /><br /><br /> /**===============================================================**/<br /> /*重新封裝 exec*/<br /> public function exec($query, array $bind = array ()){<br /> $query = $this->bind($query, $bind);<br /><br /> $stmt = parent :: query($query);<br /> $rowCount = $stmt->rowCount();<br /> $stmt->closeCursor();<br /> $stmt = null;<br /> return $rowCount;<br /> }<br /><br /> /*重新封裝 query*/<br /> public function query($query, array $bind = array ()){<br /> $query = $this->bind($query, $bind);<br /><br /> $stmt = parent :: query($query);<br /> $stmt->setFetchMode(self :: $_fetch_mode);<br /> return $stmt;<br /> }<br /><br /> /*針對僅取得筆數時的便利函數*/<br /> public function queryCount($query, array $bind = array ()){<br /> $query = $this->bind($query, $bind);<br /> $query = sprintf('SELECT COUNT(*) FROM (%s)AS QUERYCOUNT', $query);<br /><br /> $stmt = parent :: query($query);<br /> $rowCount = $stmt->fetchColumn();<br /> $stmt->closeCursor();<br /> $stmt = null;<br /> return $rowCount;<br /><br /> }<br /><br />}<br /><br /><br />/*改寫資料流物件*/<br />class DBStatement extends PDOStatement{<br /> public $dbh;<br /><br /> protected function __construct($dbh){<br /> $this->dbh = $dbh;<br /> }<br />}<br /></pre><br /><br />對於資料的操作跟原本的事一樣的<br />但我習慣將 fetch_mode 設定為 FETCH_ASSOC<br /><br />使用用範例:<br /><pre class="php" name="code"><br /><?php<br />/* 資料庫連結參數 */<br />$conf = array(<br /> 'host' => "localhost",<br /> 'username' => "root",<br /> 'password' => "1111",<br /> 'dbname' => "test_db",<br /> 'init' => "SET NAMES 'utf8'; SET group_concat_max_len=65536;"<br />);<br /><br />/* 初始化資料庫連結介面 */<br />$dbAdapter = new DB($conf); <br /><br /><br /><br /><br />/*exec 操作*/<br />$bind = array();<br />$bind['/*prefix*/'] = 'mw_';/*資料表前綴*/<br />$bind[':title'] = '文章標題';<br />$bind[':content'] = '文章內容';<br /><br />try {<br /> $dbAdapter->exec("<br /> INSERT INTO `/*prefix*/article`<br /> SET `Title` = :title,<br /> `Content` = :content,<br /> `ModifyTime` = NOW() <br /> ", $bind);<br /> <br /> echo "成功新增"; <br /> <br />/*錯誤處理*/ <br />} catch (Exception $e) {<br /> switch ($e->getCode()) {<br /> case 23000: <br /> echo "主鍵重複"; break; <br /> <br /> default:<br /> echo "新增失敗"; break; <br /> } <br /> <br />}<br /><br /><br />/*query 操作*/<br />$bind = array();<br />$bind['/*prefix*/'] = 'mw_';/*資料表前綴*/<br />$bind[':id'] = array('1','2','4');<br /><br />$data = $dbAdapter->query("<br /> SELECT `Id`, `Title`, `Content`<br /> FROM `/*prefix*/article` <br /> WHERE `Id` IN(:id)<br />", $bind)->fetchAll();<br /><br />var_dump($data);<br /><br /><br />/*queryCount 單只要取得查詢的筆數時*/<br />$bind = array();<br />$bind['/*prefix*/'] = 'mw_';/*資料表前綴*/<br />$bind[':id'] = array('1','2','4');<br /><br />$count = $dbAdapter->queryCount("<br /> SELECT `Id`, `Title`, `Content`<br /> FROM `/*prefix*/article` <br /> WHERE `Id` IN(:id)<br />", $bind);<br /><br />echo $count;<br /><br /><br />/*bind 取得查詢的 Query 字串*/<br />$bind = array();<br />$bind['/*prefix*/'] = 'mw_';/*資料表前綴*/<br />$bind[':id'] = array('1','2','4');<br /><br />$query_string = $dbAdapter->bind("<br /> SELECT `Id`, `Title`, `Content`<br /> FROM `/*prefix*/article` <br /> WHERE `Id` IN(:id)<br />", $bind);<br /><br />echo $query_string;<br /></pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-65176883121937458042009-04-26T17:40:00.007+08:002012-02-12T23:37:02.272+08:00[PHP] PDO 資料庫操作方法(快速範例)<pre class="php" name="code"><br /><?php<br /><br />/*--[PDO::query]-----------------------------------*/<br />// 建立查詢連結<br />$stmt = $DB_Link->query(sprintf("<br /> SELECT id, colour FROM test_table WHERE name=%s<br />",$name));<br /><br />// 設定查詢結果的資料格式,之後可以省去 fetch 時的格式設定<br />$stmt->->setFetchMode(PDO::FETCH_ASSOC);<br /><br />// 取得查詢結果的列數<br />$count = $stmt->rowCount ();<br />/* PDOStatement::rowCount()主要是用於 PDO::query()和PDO::prepare()進行DELETE、INSERT、UPDATE操作影響的結果集,對PDO::exec()方法 和SELECT操作無效。 */<br /><br />// 取得一列的查詢結果<br />$row = $stmt->fetch(PDO::FETCH_ASSOC);<br /><br />// 利用迴圈對每一列做處理<br />$dataArray = array(); // 結果儲存陣列<br />while ($row = $stmt->fetch(PDO::FETCH_ASSOC) {<br /> // 資料處理<br /> $row['colour'] = $row['colour']? $row['colour'] : '#000';<br /> // 加儲存陣列<br /> array_push($dataArray,$row);<br />}<br /><br />// 取得一列單一欄位的查詢結果<br />$column = $stmt->fetchColumn(); // id<br />$column = $stmt->fetchColumn(1); // colour<br />/* 當查詢結果之有一個時很好用(SELECT COUNT(*) FROM test_table) */<br /><br />// 取得所有的查詢結果列<br />$dataArray = $stmt->fetchAll (PDO::FETCH_ASSOC);<br /><br /><br />/* PDO::fetch , PDO::fetchAll 選項參數<br />PDO::FETCH_LAZY<br /> 將每一行結果作為一個對象返回<br /> <br />PDO::FETCH_ASSOC<br /> 僅返回以鍵值作為下標的查詢的結果集,名稱相同的數據只返回一個<br /><br />PDO::FETCH_NAMED<br /> 僅返回以鍵值作為下標的查詢的結果集,名稱相同的數據以數組形式返回<br /> <br />PDO::FETCH_NUM<br /> 僅返回以數字作為下標的查詢的結果集<br /> <br />PDO::FETCH_BOTH<br /> 同時返回以鍵值和數字作為下標的查詢的結果集(預設)<br /> <br />PDO::FETCH_OBJ<br /> 按照對象的形式,類似於以前的 mysql_fetch_object()<br /> <br />PDO::FETCH_BOUND<br /> 將PDOStatement::bindParam()和PDOStatement::bindColumn()所綁定的值作為變量名賦值後返回<br /> <br />PDO::FETCH_COLUMN<br /> 將返回結果每一列全部集中在一個欄位<br /> <br />PDO::FETCH_CLASS<br /> 以 Class 的形式返回結果集<br /><br />PDO::FETCH_INTO<br /> 將數據合併入一個存在的類中進行返回<br /> <br />PDO::FETCH_FUNC<br />PDO::FETCH_GROUP<br />PDO::FETCH_UNIQUE<br />PDO::FETCH_KEY_PAIR<br /> 以首個鍵值下表,後面數字下表的形式返回結果集<br /><br />PDO::FETCH_CLASSTYPE<br />PDO::FETCH_SERIALIZE<br /> 表示將數據合併入一個存在的類中并序列化返回<br /><br />PDO::FETCH_PROPS_LATE<br /> Available since PHP 5.2.0<br />*/<br /><br /><br /><br />/*--[PDO::exec]-----------------------------------*/<br />$colour="'red'";<br /><br />// 建立新增請求<br />$count = $DB_Link->exec(sprintf("<br /> INSERT INTO test_table(colour) VALUES(%s)<br />",$colour));<br />// 取得上次 Insert 時產生的 AUTO_INCREMENT Id<br />$id = $DB_Link->lastInsertId();<br /><br />// 建立更新請求<br />$count = $DB_Link->exec(sprintf("<br /> UPDATE test_table SET colour = %s WHERE id=1<br />",$colour));<br /><br />// 建立刪除請求<br />$count = $DB_Link->exec(sprintf("<br /> DELETE FROM test_table WHERE colour = %s LIMIT 10<br />",$colour));<br />/*<br /> PDO::exec 會回傳所影響的列數<br /> 但如果 DELETE 到資料表為空時將回傳 0,而不是所刪除的列數<br />*/<br /><br /></pre><br /><br />參考來源:<br /><a href="http://tw2.php.net/manual/en/pdo.lastinsertid.php">PHP: PDO::lastInsertId - Manual</a><br /><a href="http://tw2.php.net/manual/en/pdostatement.fetchcolumn.php">PHP: PDOStatement->fetchColumn - Manual</a><br /><a href="http://tw2.php.net/manual/en/pdo.exec.php">PHP: PDO::exec - Manual</a><br /><a href="http://tw2.php.net/manual/en/pdo.query.php">PHP: PDO::query - Manual</a><br /><br /><a href="http://easonyo.pixnet.net/blog/post/22966510">PDO (PHP Data Object) 簡易教學 @ wEd2.5</a><br /><a href="http://www.knowsky.com/442703.html">PHP的PDO类教程_PHP技巧</a><br /><a href="http://blog.aiqinwang.com/pdo-example/">pdo使用简例 - 板子博客</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-33990937866402405822009-04-26T06:42:00.007+08:002012-02-12T23:37:02.273+08:00[PHP] PDO 資料庫連接設定(快速範例)<pre class="php" name="code"><br /><?php<br />$hostname = "localhost";<br />$database = "test_db";<br />$username = "root";<br />$password = "0000";<br /><br /><br />/* DSN : <br />mysql:host=localhost;port=3307;dbname=testdb;unix_socket=/tmp/mysql.sock;<br /><br />pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass;<br /><br />mssql:host=localhost;dbname=testdb<br />sybase:host=localhost;dbname=testdb<br />dblib:host=localhost;dbname=testdb<br /><br />odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=localhost;PORT=50000;DATABASE=SAMPLE;PROTOCOL=TCPIP;UID=db2inst1;PWD=ibmdb2;<br />odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin;<br /><br />ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;<br /><br />oci:dbname=192.168.10.145/orcl;charset=CL8MSWIN1251<br /><br />sqlite:/opt/databases/mydb.sq3<br />sqlite::memory:<br />sqlite2:/opt/databases/mydb.sq2<br />sqlite2::memory:<br />*/<br /><br />$dsn="mysql:host=$hostname;dbname=$database";<br />try {<br /> $DB_Link = new PDO($dsn, $username,$password<br /> /*,array(<br /> PDO::ATTR_PERSISTENT => true, // 開啟 DB 長連接<br /> PDO::MYSQL_ATTR_INIT_COMMAND => // MySQL 前置設定<br /> "SET NAMES 'utf8'; SET group_concat_max_len=65536;",<br /> PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>false // MySQL 查詢緩衝區<br /> )*/<br /> ); <br />} catch (PDOException $e) {<br /> // 資料庫連結失敗<br /> $e->errorInfo ; // 錯誤明細<br /> $e->getMessage(); // 返回異常資訊<br /> $e->getPrevious(); // 返回前一個異常<br /> $e->getCode(); // 返回異常程式碼<br /> $e->getFile(); // 返回發生異常的檔案名<br /> $e->getLine(); // 返回發生異常的程式碼行號<br /> $e->getTrace(); // backtrace() 陣列<br /> $e->getTraceAsString(); // 已格成化成字串的 getTrace() 資訊 <br /> <br /> // 錯誤處理...<br />}<br /><br />/*<br />PDO::ATTR_CASE: 返回的資料欄位名稱設定<br /> PDO::CASE_LOWER: 欄位名稱全部轉換成小寫<br /> PDO::CASE_NATURAL: 使用原始欄位名稱(預設)<br /> PDO:: CASE_UPPER: 欄位名稱全部轉換成大寫<br />*/<br />//$DB_Link->setAttribute(PDO::ATTR_CASE,PDO::CASE_NATURAL);<br /><br /><br />/*<br />PDO::ATTR_ERRMODE: 錯誤報告<br /> PDO::ERRMODE_SILENT: 不顯示錯誤信息,只顯示錯誤碼。<br /> PDO::ERRMODE_WARNING: 顯示警告跟錯誤。<br /> PDO::ERRMODE_EXCEPTION: 拋出異常。<br />*/<br />$DB_Link->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);<br /><br /><br />/*<br />PDO::ATTR_ORACLE_NULLS : 轉換無效的空字串<br /> PDO::NULL_NATURAL: 不轉換(預設)。<br /> PDO::NULL_EMPTY_STRING: 空字串轉換為 NULL。<br /> PDO::NULL_TO_STRING: NULL 轉換為空字串。<br />*/<br />//$DB_Link->setAttribute(PDO::ATTR_ORACLE_NULLS,PDO::NULL_NATURAL);<br /><br />/*<br />PDO::ATTR_STRINGIFY_FETCHES:<br /> Convert numeric values to strings when fetching. Requires bool. <br />*/<br />//$DB_Link->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);<br /><br /> <br />/*<br />PDO::ATTR_STATEMENT_CLASS: 變更預設 PDOStatement Class<br />*/<br />//class DBStatement extends PDOStatement {}<br />//$DB_Link->setAttribute(PDO::ATTR_STATEMENT_CLASS,<br />// array('DBStatement', array($DB_Link))<br />//);<br /><br /> <br />/*<br />PDO::ATTR_AUTOCOMMIT: 自動啟動交易處理<br /> 在設置成true的時候,PDO會自動嘗試停止接受委託,開始執行<br />*/<br />//$DB_Link->setAttribute(PDO::ATTR_AUTOCOMMIT,true);<br /><br /><br /><br />// 設定存取的編碼方式<br />$DB_Link->exec("SET NAMES 'utf8';");<br /><br />// 設定 GROUP_CONCAT 的最大長度<br />$DB_Link->exec("SET group_concat_max_len=65536;");<br /><br />// 關閉查詢快取<br />//$DB_Link->exec("SET SESSION query_cache_type=OFF;");<br /><br /></pre><br /><br /><br /><br />參考來源:<br /><a href="http://tw.php.net/manual/en/pdo.drivers.php">PHP: PDO Drivers - Manual</a><br /><a href="http://tw.php.net/manual/en/pdo.construct.php">PHP: PDO::__construct - Manual</a><br /><a href="http://tw.php.net/manual/en/class.pdoexception.php">PHP: PDOException - Manual</a><br /><a href="http://tw.php.net/manual/en/pdo.setattribute.php">PHP: PDO::setAttribute - Manual</a><br /><br /><a href="http://www.systn.com/data/articles/172_tw.html">牛刀小小試 PHP5中PDO的簡單使用</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0