php – PDO – 有趣的 PDO::FETCH_CLASS 用法

PDO 的 PDO::FETCH_CLASS 用法,可以讓你指定對應的 Class 類別,然後自由處理你的方法。我們來看這個例子就懂了

<?php

// 這是提供給 PDO 使用的
class Member
{
    // 拼湊字串
    public function title()
    {
        // 可以直接使用這三個屬性,是因為 PDO 會將資料庫的欄位,對應到 class 的屬性
        return "{$this->id} | {$this->account} | {$this->name}";
    }
}

try
{
    // 連接資訊 
    $pdo      = new PDO("mysql:host=localhost;dbname=ci_jsn", 'root', '');
    $pdo->query("set names utf8");
    $sql      = "select * from member limit 1";
    
    // 運行 SQL
    $query    = $pdo->query($sql);

    // 指定提取樣式(fetch_style)為 PDO::FETCH_CLASS,並將它對應到我們自訂的類別 Member
    $datalist = $query->fetchAll(PDO::FETCH_CLASS, "Member");
    
    foreach ($datalist as $datainfo)
    {
        // 我們呼叫自訂的方法 title()
        echo $datainfo->title(); // 27 | root | 最高管理員
    }

}
catch(Exception $e)
{
    // 發生錯誤會顯示
    echo $e->getMessage();
}

 

php – codeigniter 資料庫使用 PDO 與mysql、mysqli 的不同

在config/database.php設定如下

$active_group = 'default';
$active_record = TRUE;


$db['default']['hostname'] = 'mysql:host=localhost'; //如果使用dbdriver使用mysql或mysqli就填寫localhost即可。使用PDO寫法較不一樣。
$db['default']['username'] = '資料庫使用者名稱';
$db['default']['password'] = '資料庫使用者密碼';
$db['default']['database'] = '資料庫名稱';
$db['default']['dbdriver'] = 'pdo'; //使用PDO
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

比較須要注意的就是
$db[‘default’][‘hostname’]
$db[‘default’][‘dbdriver’]
的地方~