thinkphp連接資料庫
Ⅰ 怎麼樣配置thinkphp 與本地mysql和sql server同時連接倆個資料庫
thinkphp 同時連接兩個資料庫的配置方法如下:
1、在Db.class.php腳本文件裡面的類增加一個魔術方法__get(),寫法如下:
public function __get($propertyName)
{ return $this->$propertyName;
}
這個方法是用來訪問類中protected $config成員屬性用的。有的人可能會說,直接把protected改成public豈不是更好。這樣只解決了基類的問題,假如,子類也同樣進行了受保護,那要你更改更多的文件,這是我們做IT程序員非常不願意看到的事情。
2、在Model.class.php中的getTableName()方法更改如下:
$tablepre = $this->db->config['tablepre'];
if(empty($this->trueTableName)) {
$tableName??= empty($tablepre) ? $this->tablePrefix : $tablepre;
if(!empty($this->tableName)) {
$tableName .= $this->tableName;
}
else
{
$tableName .= parse_name($this->name);
}
$this->trueTableName? ? =? ?strtolower($tableName);
}
return (!empty($this->dbName)?$this->dbName.'.':'').$this->
trueTableName;這樣就完成了多庫自由切換時,導致的表前綴問題。
Ⅱ PHP利用pdo_odbc實現連接資料庫示例【基於ThinkPHP5.1搭建的項目】
本文實例講述了PHP利用pdo_odbc實現連接資料庫。分享給大家供大家參考,具體如下:
目的:從sql
server資料庫裡面把某個視圖文件調用出來,以鍵值對的方式顯示在頁面上。
利用pdo
odbc來實現PHP連接資料庫:
在PHP配置文件裡面開啟pdo_odbc.dll服務。重啟Apache伺服器。
在ThinkPHP5.1的項目中在模塊里添加config添加規定好的樣式資料庫:
代碼如下:
<?php
return
[
//
資料庫類型
'type'
=>
'sqlsrv',
//
伺服器地址
'hostname'
=>
'localhost',
//
資料庫名
'database'
=>
'mysql',
//
用戶名
'username'
=>
'sa',
//
密碼
'password'
=>
'123456',
//
埠
'hostport'
=>
'',
//
連接dsn
'dsn'
=>
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
資料庫連接參數
'params'
=>
[],
//
資料庫編碼默認採用utf8
'charset'
=>
'utf8',
//
資料庫表前綴
'prefix'
=>
'',
//
資料庫調試模式
'debug'
=>
true,
//
資料庫部署方式:0
集中式(單一伺服器),1
分布式(主從伺服器)
'deploy'
=>
0,
//
資料庫讀寫是否分離
主從式有效
'rw_separate'
=>
false,
//
讀寫分離後
主伺服器數量
'master_num'
=>
1,
//
指定從伺服器序號
'slave_no'
=>
'',
//
是否嚴格檢查欄位是否存在
'fields_strict'
=>
true,
//
數據集返回類型
'resultset_type'
=>
'array',
//
自動寫入時間戳欄位
'auto_timestamp'
=>
false,
//
時間欄位取出後的默認時間格式
'datetime_format'
=>
'Y-m-d
H:i:s',
//
是否需要進行SQL性能分析
'sql_explain'
=>
false,
//
Builder類
'builder'
=>
'',
//
Query類
'query'
=>
'\\think\\db\\Query',
//
是否需要斷線重連
'break_reconnect'
=>
false,
//
斷線標識字元串
'break_match_str'
=>
[],
];
?>
在控制器controller裡面建一個控制文件Test.php
代碼如下:
<?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')->select();
echo
json_encode($data);
}
}
?>
最後調用入口文件即可訪問。
http://localhost:81/1111/tp5/public/index/test/zz
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend
FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:ThinkPHP實現多資料庫連接的解決方法tp5(thinkPHP5)框架實現多資料庫查詢的方法ThinkPHP3.1新特性之多資料庫操作更加完善tp5(thinkPHP5)框架連接資料庫的方法示例PHP7使用ODBC連接SQL
Server2008
R2資料庫示例【基於thinkPHP5.1框架】thinkPHP5實現的查詢資料庫並返回json數據實例tp5(thinkPHP5)操作mongoDB資料庫的方法tp5(thinkPHP5)框架資料庫Db增刪改查常見操作總結thinkPHP5框架實現多資料庫連接,跨數據連接查詢操作示例
Ⅲ thinkphp如何連接多個資料庫
1、onfig.php文件
'LOAD_EXT_CONFIG'
=>'db,db_config',
//
載入擴展
配置文件
。多個文件用逗號分隔
//其中db.php中放置的是mysql的配置
//db_config放置的是
sqlserver
的配置
2、其中db.php內容如下
return
array(
'DB_TYPE'=>'mysql',
'DB_HOST'=>'
localhost
',
'DB_NAME'=>'your_mysql_dbname',
'DB_USER'=>'your_mysql_user_name',
'DB_PWD'=>'123456',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'',
);
db_config.php內容如下
return
array(
'DB_CONFIG1'
=>
array(
'db_type'
=>
'pdo',
'db_user'
=>
'XX',
'db_pwd'
=>
'XXXXXXXX',
'DB_DSN'
=>
'sqlsrv:Server=XXXXXX;Database=XXXX',
),
);
3、在Lib/Model下新建一個專門的模型
class
SqlsrvModel
extends
Model
{
protected
$
connection
=
'DB_CONFIG1';
}
4、可以在Action
中調
各個模型了
Ⅳ ThinkPhp怎麼連接Access資料庫
con\config.php 中配置如下 ?php return array( APP_DEBUG = true, DB_TYPE=
pdo, // 注意DSN的配置針對不同的資料庫有所區別 請參考PHP手冊PDO類庫部分
DB_DSN=odbc:driver={microsoft access driver
(*.mdb)};dbq=.getcwd().\\Database\\#fbdb.mdb, DB_USE
con\config.php 中配置如下
<?php
return array(
'APP_DEBUG' => true,
'DB_TYPE'=> 'pdo',
// 注意DSN的配置針對不同的資料庫有所區別 請參考PHP手冊PDO類庫部分
'DB_DSN'=>"odbc:driver={microsoft access driver
(*.mdb)};dbq=".getcwd()."\\Database\\#fbdb.mdb",
'DB_USER'=>'root',
'DB_PWD'=>'',
'DB_PREFIX'=>'wxz_',
);
?>
其中 需修改的有 "\\Database\\#fbdb.mdb"
相對與當前目錄下的資料庫文件位置,其餘的用戶名、密碼和前綴(「wxz_」)根據情況修改
IndexAction.class.php示例代碼
<?php
class IndexAction extends Action {
public function index(){
$r =
M()->query("select * from proct");
print_r($r);
}
}
ThinkPHP 內置了抽象資料庫詎問層,把丌同癿資料庫操作封裝起來,我們叧需要使用公共癿Db 類
迕行操作,而無需針對丌同癿資料庫寫丌同癿代碼和底層實現,Db 類會自勱調用相應癿資料庫驅勱來處
理。目前癿資料庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對
PDO 癿支持,如果應用需要使用資料庫,必須配置資料庫連接信息,資料庫癿配置文件有多種定丿方式,不支持ACCESS資料庫
Ⅳ 多個Thinkphp項目如何共用一個資料庫連接
如果你的多個項目就是只要這1個資料庫,那在多個項目的config.php文件寫資料庫配置,如果你只想某個查詢的時候連接額外的資料庫,model->db("number",$config)->query();數字編號是你第一次連接的時候任意寫1個,下次再用這個連接就不用寫$config,$config就是你要查詢的資料庫配置,具體看手冊-模型-連接資料庫(切換資料庫)
Ⅵ thinkphp 如何手動連接資料庫
//資料庫配置1
'DB_CONFIG1' = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp'
),
//資料庫配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp';
這樣,設置2個資料庫。切換方法如下:
$this->db(1,"DB_CONFIG1")->query("查詢SQL");
$this->db(2,"DB_CONFIG2")->query("查詢SQL");
這樣來調用,就可以了。至於裡面的參數,你應該了解吧,DB2的配置也可以照第1個那樣寫,主要注意一下調用形式就可以了。希望幫到你
$this->db(1)->table("top_user")->find();
這個是指定表的查詢,M的使用方法:
M("User","think_","DB_CONFIG1")->query("查詢SQL");
think_是表前綴,2個庫肯定不一樣。
Ⅶ thinkphp3.2怎麼連接資料庫配置
return array(
//'配置項'=>'配置值'
'DB_TYPE' => ' ', // 資料庫類型
'DB_HOST' => ' ', // 伺服器地址
'DB_NAME' => ' ', // 資料庫名
'DB_USER' => ' ', // 用戶名
'DB_PWD' => '', // 密碼
'DB_PORT' => ' ', // 埠
'DB_PREFIX' => ' ', // 資料庫表前綴
'DB_CHARSET' => 'utf8', //編碼
)