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’]
的地方~

php – 在xampp底下變慢的修正方法

找出你程式碼連接資料庫(像我是連MySQL)的程式碼

若寫的是localhost,替換成127.0.0.1即可

phpmyadmin – 解決 「phpMyAdmin 高級功能未全部設定,部分功能不可用。要查出原因請點這裡。」

當出現這段文字的時候

phpMyAdmin 高級功能未全部設定,部分功能不可用。要查出原因請<a href="http://localhost/phpmyadmin/chk_rel.php?token=0400bd52b474af55594d30c1fb41fc28">點這裡</a>。

就點進去

會看到裡面出現這類文字

$cfg[‘Servers’][$i][‘pmadb’] … 錯誤 [ 文件 ]
$cfg[‘Servers’][$i][‘relation’] … 錯誤 [ 文件 ]
一般關聯功能: 已關閉

拉到下方參考他的使用方法就可以解決了!

快速設定進階功能:

  • 透過 examples/create_tables.sql 建立必需的資料表 文件
  • 建立一個使用者並授予其訪問上一步操作中建立的資料表的權限 文件
  • 在設定檔案 (config.inc.php) 中啓用進階功能,參見 config.sample.inc.php 中的範例 文件
  • 請重新登錄 phpMyAdmin 以載入新設定並使其生效

 

 

1.把examples/create_tables.sql匯入你的mysql

2.在phpmysql資料夾底下,有個config.inc.php檔,如果是套裝軟體都會有,但若是執接下載phpmyadmin的話可能會沒有,

沒關係,請複製config.sample.inc.php一份並更改檔名為config.inc.php

3.接著修改config.inc.php,把註解掉的陣列全都取消註解

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
$cfg['Servers'][$i]['recent'] = 'pma_recent';
/* Contrib / Swekey authentication */
$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

4. 修改上面的這三行

$cfg['Servers'][$i]['controlhost'] = 'localhost'; //像我本機的就寫localhost
$cfg['Servers'][$i]['controluser'] = 'root';//像我本機的預設帳號root
$cfg['Servers'][$i]['controlpass'] = '1234';//我自己預設的是1234

5.像我填寫好了以後,重新整理phpmyadmin網頁會沒反應,因為我沒照她說的做…

請重新登出在登入phpmyadmin吧!這樣警告就取消了!而且會發現多了一些新功能囉

 

 

 

 

 

 

MYSQL – 指定排序

+—-+——-+
| id | name |
+—-+——-+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
+—-+——-+
//須要取得id 為指定數字時並依照排序的兩種方法

select * from test where id in(3,1,5) order by find_in_set(id,’3,1,5′);

select * from test where id in(3,1,5) order by substring_index(‘3,1,2’,id,1);