ThinkPHP3.2.3資料庫設定新特性,thinkphp3.2.3_PHP教程

來源:互聯網
上載者:User

ThinkPHP3.2.3資料庫設定新特性,thinkphp3.2.3


ThinkPHP3.2.3版本資料庫驅動採用PDO完全重寫,配置和使用上面也比之前版本更加靈活和強大,我們來瞭解下如何使用。

首先,3.2.3的資料庫配置資訊有所調整,完整的資料庫設定包括:

複製代碼 代碼如下:
/* 資料庫設定 */
'DB_TYPE' => '', // 資料庫類型
'DB_HOST' => '', // 伺服器位址
'DB_NAME' => '', // 資料庫名
'DB_USER' => '', // 使用者名稱
'DB_PWD' => '', // 密碼
'DB_PORT' => '', // 連接埠
'DB_PREFIX' => '', // 資料庫表首碼
'DB_PARAMS' => array(), // 資料庫連接參數
'DB_DEBUG' => TRUE, // 資料庫偵錯模式 開啟後可以記錄SQL日誌
'DB_LITE' => false, // 使用資料庫Lite模式
'DB_FIELDS_CACHE' => true, // 啟用欄位緩衝
'DB_CHARSET' => 'utf8', // 資料庫編碼預設採用utf8
'DB_DEPLOY_TYPE' => 0, // 資料庫部署方式:0 集中式(單一伺服器),1 分布式(主從伺服器)
'DB_RW_SEPARATE' => false, // 資料庫讀寫是否分離 主從式有效
'DB_MASTER_NUM' => 1, // 讀寫分離後 主伺服器數量
'DB_SLAVE_NO' => '', // 指定從伺服器序號

相對3.2.2版本來說,取消了如下設定參數:

複製代碼 代碼如下:
'DB_FIELDTYPE_CHECK' // 3.2.3強制進列欄位類型檢測了
'DB_SQL_BUILD_CACHE' // 3.2.3取消了SQL建立緩衝
'DB_SQL_BUILD_QUEUE' // 3.2.3取消了SQL建立緩衝
'DB_SQL_BUILD_LENGTH' // 3.2.3取消了SQL建立緩衝
'DB_SQL_LOG' // 由新增的DB_DEBUG參數取代
'DB_BIND_PARAM' // 新版採用PDO 自動參數綁定 無需設定

新增的資料庫設定參數包括:

複製代碼 代碼如下:
'DB_DEBUG' //用於開啟資料庫偵錯模式,開啟後即可記錄SQL日誌
'DB_LITE' // 是否採用資料庫Lite模式串連 開啟後只能使用原生SQL查詢

3.2.2版本資料庫的偵錯模式和項目的偵錯模式(由APP_DEBUG常量定義)是綁定的 ,3.2.3版本開始資料庫的偵錯模式是獨立設定(由DB_DEBUG參數設定)的。

DB_TYPE參數為資料庫類型設定,目前支援的驅動包括mysql/sqlite/oracle/pgsql/sqlsrv/firebird(其他的資料庫類型需要增加驅動),設定如下:
'DB_TYPE'=>'mysql', // 不再支援設定為PDO 也不再區分mysql和mysqli
複製代碼
資料庫的串連資訊,主要包括下面參數:

複製代碼 代碼如下:
'DB_HOST' => '', // 伺服器位址 採用IP地址
'DB_NAME' => '', // 資料庫名
'DB_USER' => '', // 使用者名稱
'DB_PWD' => '', // 密碼
'DB_PORT' => '', // 連接埠 留空則取預設連接埠
'DB_CHARSET' => '', // 資料庫編碼

以上設定參數會在執行個體化PDO的時候自動轉換為PDO的串連參數傳入。

DB_DSN參數一般無需設定,系統的資料庫驅動會進行預設設定,如果需要調整,請遵循PDO的相關資料庫連接的DSN設定進行設定。

DB_PARAMS用於設定資料庫的串連參數,會傳入PDO執行個體化的第四個參數。

下面是一個典型的資料庫全域設定:

複製代碼 代碼如下:
'DB_TYPE' => 'mysql', // 資料庫類型
'DB_HOST' => '192.168.1.10', // 伺服器位址
'DB_NAME' => 'thinkphp', // 資料庫名
'DB_USER' => 'root', // 使用者名稱
'DB_PWD' => '1234', // 密碼
'DB_PORT' => '3306', // 連接埠
'DB_PREFIX' => 'think_', // 資料庫表首碼
'DB_CHARSET' => 'utf8', // 資料庫編碼
'DB_DEBUG' => TRUE, // 資料庫偵錯模式 開啟後可以記錄SQL日誌

如果在模型類中設定單獨的資料庫連接資訊connection屬性,可以使用下面的數組或者字串方式:

複製代碼 代碼如下:
//在模型裡單獨設定資料庫連接資訊
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
 // 採用數組方式定義
protected $connection = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => '192.168.1.10',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset' => 'utf8',
);
}

注意:在模型中設定的資料庫連接設定參數採用全域配置的小寫名。

或者採用字串方式定義,格式為:
資料庫類型://使用者名稱:密碼@資料庫地址:資料庫連接埠/資料庫名#字元集
例如:

複製代碼 代碼如下:
//在模型裡單獨設定資料庫連接資訊
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
// 使用字串方式定義
protected $connection = 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';
}

也可以通過設定檔設定,例如:

複製代碼 代碼如下:
//資料庫配置1
'DB_CONFIG1' => array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => '192.168.1.10',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset'=> 'utf8',
),
//資料庫配置2
'DB_CONFIG2' => 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';

然後在模型裡面定義:

複製代碼 代碼如下:
//在模型裡單獨設定資料庫連接資訊
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
//調用設定檔中的資料庫配置1
protected $connection = 'DB_CONFIG1';
// 或者
protected $connection = 'DB_CONFIG2';
}

除了在模型定義的時候指定資料庫連接資訊外,我們還可以在執行個體化的時候指定資料庫連接資訊,如果採用的是M方法執行個體化模型的話,也可以支援傳入不同的資料庫連接資訊,例如:

複製代碼 代碼如下:
$User = M('User','other_','mysql://root:1234@192.168.1.10/demo#utf8');

表示執行個體化User模型,串連的是demo資料庫的other_user表,採用的串連資訊是第三個參數配置的。
如果我們在項目設定檔中已經配置了DB_CONFIG2的話,也可以採用:
$User = M('User','other_','DB_CONFIG2');

以上就是本文的全部內容了,希望大家能夠喜歡。

http://www.bkjia.com/PHPjc/963838.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/963838.htmlTechArticleThinkPHP3.2.3資料庫設定新特性,thinkphp3.2.3 ThinkPHP3.2.3版本資料庫驅動採用PDO完全重寫,配置和使用上面也比之前版本更加靈活和強大,我們來...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.