⑴ 怎麼樣配置thinkphp 與本地mysql和sql server同時連接倆個資料庫
thinkphp 同時連接兩個資料庫的配置方法如下:
1、在Db.class.php腳本文件裡面的類增加一個魔術方法__get(),寫法如下:
publicfunction__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;這樣就完成了多庫自由切換時,導致的表前綴問題。
/*******************面向對象PDO連接方式*********************/
'DB_TYPE'=>'PDO',//資料庫類型
'DB_DSN'=>'mysql:host=localhost;dbname=master',//DSN連接。
'DB_USER'=>'root',//資料庫用戶名
'DB_PWD'=>'123456',//資料庫密碼
'DB_PORT'=>'3306',//資料庫埠
'DB_PREFIX'=>'g_',//數據表前綴
'DB_CHARSET'=>'utf8',//資料庫編碼默認採用utf8
⑵ 用Thinkphp,時間戳轉換成正常時間格式(Y年m月),MYSQL資料庫的日期欄位類型是什麼
mysql資料庫的日期欄位類型建議為varchar或者char,存入時間戳。
取出的時候,將時間戳轉換為你需要的時間格式就好。
例:
假設取出值為$time
echo date('Y-m-d H:i:s',$time);
你就會看到:2011-11-23 17:42:43的時間格式
⑶ thinkphp redis 怎麼選擇資料庫
1、redis 中的每一個資料庫,都由一個 redisDb 的結構存儲。其中,redisDb.id 存儲著 redis 資料庫以整數表示的號碼。redisDb.dict 存儲著該庫所有的鍵值對數據。redisDb.expires 保存著每一個鍵的過期時間。
2、當redis 伺服器初始化時,會預先分配 16 個資料庫(該數量可以通過配置文件配置),所有資料庫保存到結構 redisServer 的一個成員 redisServer.db 數組中。當我們選擇資料庫 select number 時,程序直接通過 redisServer.db[number] 來切換資料庫。有時候當程序需要知道自己是在哪個資料庫時,直接讀取 redisDb.id 即可。
3、既然我們知道一個資料庫的所有鍵值都存儲在redisDb.dict中,那麼我們要知道如果找到key的位置,就有必要了解一下dict 的結構了:
typedef struct dict {
// 特定於類型的處理函數
dictType *type;
// 類型處理函數的私有數據
void *privdata;
// 哈希表(2個)
dictht ht[2];
// 記錄 rehash 進度的標志,值為-1 表示 rehash 未進行
int rehashidx;
// 當前正在運作的安全迭代器數量
int iterators;
} dict;
由上述的結構可以看出,redis 的字典使用哈希表作為其底層實現。dict 類型使用的兩個指向哈希表的指針,其中 0 號哈希表(ht[0])主要用於存儲資料庫的所有鍵值,而1號哈希表主要用於程序對 0 號哈希表進行 rehash 時使用,rehash 一般是在添加新值時會觸發,這里不做過多的贅述。所以redis 中查找一個key,其實就是對進行該dict 結構中的 ht[0] 進行查找操作。
4、既然是哈希,那麼我們知道就會有哈希碰撞,那麼當多個鍵哈希之後為同一個值怎麼辦呢?redis採取鏈表的方式來存儲多個哈希碰撞的鍵。也就是說,當根據key的哈希值找到該列表後,如果列表的長度大於1,那麼我們需要遍歷該鏈表來找到我們所查找的key。當然,一般情況下鏈表長度都為是1,所以時間復雜度可看作o(1)。
二、當redis 拿到一個key 時,如果找到該key的位置。
了解了上述知識之後,我們就可以來分析redis如果在內存找到一個key了。
1、當拿到一個key後, redis 先判斷當前庫的0號哈希表是否為空,即:if (dict->ht[0].size == 0)。如果為true直接返回NULL。
2、判斷該0號哈希表是否需要rehash,因為如果在進行rehash,那麼兩個表中者有可能存儲該key。如果正在進行rehash,將調用一次_dictRehashStep方法,_dictRehashStep 用於對資料庫字典、以及哈希鍵的字典進行被動 rehash,這里不作贅述。
3、計算哈希表,根據當前字典與key進行哈希值的計算。
4、根據哈希值與當前字典計算哈希表的索引值。
5、根據索引值在哈希表中取出鏈表,遍歷該鏈表找到key的位置。一般情況,該鏈表長度為1。
6、當 ht[0] 查找完了之後,再進行了次rehash判斷,如果未在rehashing,則直接結束,否則對ht[1]重復345步驟。
到此我們就找到了key在內存中的位置了。
⑷ thinkphp配置資料庫文件在哪
ThinkPHP\Common文件夾中的convention.php中是tp的核心配置文件,不能亂動,如果要想更改裡面的配置,在Conf 文件夾裡面的config.php可以配置,可以這樣寫
<?php
return array(
'DB_TYPE' => 'mysql',// 資料庫類型
'DB_HOST' => '127.0.0.1',// 資料庫伺服器地址
'DB_NAME' => 'thinkphp',// 資料庫名稱
'DB_USER' => 'root',// 資料庫用戶名
'DB_PWD' => '123',// 資料庫密碼
'DB_PREFIX' => 'tp_',// 數據表前綴
'DB_CHARSET' => 'utf8',// 網站編碼
'DB_PORT' => '3306',// 資料庫埠
'APP_DEBUG' => false,// 開啟調試模式
);
⑸ ThinkPHP 使用的是什麼資料庫
ThinkPHP是一個PHP開發框架。
資料庫理論上是無所謂的。
⑹ thinkphp支持哪些資料庫
目前的資料庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對PDO的支持,如果應用需要使用資料庫,必須配置資料庫連接信息,資料庫的配置文件有多種定義方式。
⑺ thinkphp 如何修改資料庫鍵值對類型的數據
你是要將查詢出的數據中為空的欄位補充信息,這樣可能有好幾個空欄位,所以理想的方法是先找出需要更新的欄位,最後再一次性更新。
foreach($arr[0] as $k => $val){
$data['id'] = $arr[0]['id'];
if($val == null)
$data[$k] = '寫入這句';
$m->save($data);
}
⑻ ThinkPHP2.1 多資料庫 表前綴怎麼設置
ThinkPHP\Common文件夾中的convention.php中是tp的核心配置文件,不能亂動,如果要想更改裡面的配置,在Conf 文件夾裡面的config.php可以配置,可以這樣寫
<?php
return array(
'DB_TYPE' => 'mysql',// 資料庫類型
'DB_HOST' => '127.0.0.1',// 資料庫伺服器地址
'DB_NAME' => 'thinkphp',// 資料庫名稱
'DB_USER' => 'root',// 資料庫用戶名
'DB_PWD' => '123',// 資料庫密碼
'DB_PREFIX' => 'tp_',// 數據表前綴
'DB_CHARSET' => 'utf8',// 網站編碼
'DB_PORT' => '3306',// 資料庫埠
'APP_DEBUG' => false,// 開啟調試模式
);
?>
也可以在最外邊寫,就是與ThinkPHP框架同一目錄中寫一個config.php文件,格式如同上面的一樣,不過在Conf 文件夾裡面的config.php中得包含最外邊的那個config.php
⑼ thinkphp怎麼使用mysqli擴展庫
這個在配置裡面是可以設置的,一般是與連接資料庫設置一起配置:
//資料庫配置信息
'DB_TYPE'=>'mysql',//資料庫類型
'DB_HOST'=>'localhost',//伺服器地址
'DB_NAME'=>'thinkphp',//資料庫名
'DB_USER'=>'root',//用戶名
'DB_PWD'=>'123456',//密碼
'DB_PORT'=>3306,//埠
'DB_PREFIX'=>'think_',//資料庫表前綴
'DB_CHARSET'=>'utf8',//字元集
'DB_DEBUG'=>TRUE,//資料庫調試模式開啟後可以記錄SQL日誌
其中資料庫類型可以設置為:mysqli
更多類型還有:
DB_TYPE設置
支持的資料庫類型
mysql或mysqli mysql
pgsql pgsql
sqlite sqlite
mssql 或sqlsrv sqlserver
oracle oracle
ibase ibase
mongo mongo
PDO PDO支持的所有資料庫