此類庫簡(jiǎn)單、易用,便于你自己修改和對(duì)功能的改善,能解決大部分
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)包河,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
PHP
項(xiàng)目中執(zhí)行的
SQL
操作。
初步工作
首先,請(qǐng)大家下載這個(gè)類庫
M.class.php 再下載一個(gè)
Mysqli
連接數(shù)據(jù)庫的類庫
MysqliDb.class.php(打包下載地址)
新建一個(gè)
includes
的文件夾,將下載下來的兩個(gè)
class
文件,放進(jìn)去。
然后,請(qǐng)你在項(xiàng)目下創(chuàng)建一個(gè)
test.php
文件。注:UTF-8
文件格式
請(qǐng)先根據(jù)你機(jī)器的情況,填充以下代碼,用于連接數(shù)據(jù)庫:
復(fù)制代碼
代碼如下:
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH',
dirname(__FILE__));
define('DB_HOST',
'localhost');
//數(shù)據(jù)庫服務(wù)器地址
define('DB_USER',
'root');
//數(shù)據(jù)庫用戶名
define('DB_PWD',
'×××');//數(shù)據(jù)庫密碼
define('DB_NAME',
'×××');
//數(shù)據(jù)庫名稱
define('DB_PORT',
'3306');
//數(shù)據(jù)庫端口
function
__autoload($className)
{
require_once
ROOT_PATH
.
'/includes/'.
ucfirst($className)
.'.class.php';
//自動(dòng)加載
class
文件
}
好了,上面的這些操作都是初步工作,下面正式進(jìn)入類庫的講解。
類庫講解
首先,我們得實(shí)例化
M.class.php,實(shí)例化很簡(jiǎn)單:
復(fù)制代碼
代碼如下:
$m
=
new
M();
//這步操作代表
M.class.php
中的所有功能都封裝在了變量
$m
中
注:
1、M類庫中的方法參數(shù)說明,請(qǐng)到
M.class.php
文件中看詳細(xì)的注釋,這里不再進(jìn)行敘述。建議在學(xué)習(xí)的時(shí)候,對(duì)照著看下文件中的參數(shù)即注釋。
2、講解代碼中用到的數(shù)據(jù)庫結(jié)構(gòu)為:
復(fù)制代碼
代碼如下:
CREATE
TABLE
`user`
(
`id`
int(8)
unsigned
NOT
NULL
auto_increment,
`name`
varchar(50)
default
NULL,
`email`
varchar(100)
default
NULL,
`age`
smallint(3)
default
NULL,
`class_id`
int(8)
default
NULL,
`commit_time`
int(10)
default
NULL,
PRIMARY
KEY
(`id`),
KEY
`name`
(`name`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
復(fù)制代碼
代碼如下:
CREATE
TABLE
`class`
(
`class_id`
int(8)
NOT
NULL
auto_increment,
`class_name`
varchar(100)
default
NULL,
PRIMARY
KEY
(`class_id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
并添加一條測(cè)試數(shù)據(jù)。
3、M類庫中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實(shí)例中可以看出
4、以下稱述中的
M
為
M.class.php
文件
方法1、Insert()
添加數(shù)據(jù)
Insert
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina.com',
'23',
time()));
//
拼接方法:往`user`表中添加一條數(shù)據(jù),返回值為數(shù)據(jù)庫影響的行數(shù)
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina.com',
'23',
time()),
true);
//
功能同上,返回
last_insert_id(插入的增長(zhǎng)id)
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina.com.cn',
'22',
'".time()."')");
//SQL方法,返回值為數(shù)據(jù)庫影響的行數(shù)
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina.com.cn',
'22',
'".time()."')",
true);
//
同上,返回
last_insert_id
注:Insert
方法中的第二個(gè)參數(shù)若為null,可自動(dòng)獲得插入表除
auto_increment
字段之外的所有字段,詳情請(qǐng)看M源文件;若要返回值為最后插入的
ID,那么請(qǐng)?jiān)O(shè)置
Insert
方法的最后一個(gè)參數(shù)為
true(默認(rèn)是false);
方法2、Update()
修改數(shù)據(jù)
update
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Update("user",
array('name'='李茹茹',
'age'=24),
"id=1");
//拼接方法,修改id為1的數(shù)據(jù)的名稱為“李茹茹”;年齡為“24”,其方法的返回值為受影響的行數(shù)
$m-Update("UPDATE
`user`
SET
`name`='李茹茹',
`age`=24
WHERE
id
=
1");
//SQL
用法,功能同上
方法3、Del()
刪除數(shù)據(jù)
Del
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Del('user',
'id=3');
//拼接方法:刪除`user`表中
id
為3的數(shù)據(jù),返回受影響的行數(shù)
$m-Del("DELETE
FROM
`user`
WHERE
id=4");
//SQL方法:刪除`user`表中
id
為4的數(shù)據(jù),返回受影響的行數(shù)
$m-Del("DELETE
FROM
`user`
WHERE
id
in
(10,
11,
12)");
//SQL方法:刪除多條數(shù)據(jù),刪除`user`表中
id
為
10、11、12
的數(shù)據(jù),返回受影響的行數(shù)
方法4、Total()
獲取記錄數(shù),返回值都為int
Del
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$m-Total('user');
//拼接方法:返回
`user`表中的記錄數(shù),無條件
$m-Total('user',
'id1');
//拼接方法:返回
`user`表中
id
大于1的記錄數(shù),有條件
$m-Total("SELECT
COUNT(*)
AS
total
FROM
`user`");
//SQL方法,注:使用SQL方法,語句中必須使用
"AS
total",否則會(huì)報(bào)錯(cuò)
方法5、IsExists()
檢查數(shù)據(jù)是否存在,返回值為boolean
復(fù)制代碼
代碼如下:
$m-IsExists('user',
"`name`='焦焦'");
//拼接方法:返回`user`表中是否存在`name`為“焦焦”的數(shù)據(jù),返回true,若不存在,返回false
方法6、InsertId()
獲取表下一個(gè)添加的自動(dòng)增長(zhǎng)id,注意,這里不進(jìn)行添加操作,只是獲取下一個(gè)增長(zhǎng)id
復(fù)制代碼
代碼如下:
echo
$m-InsertId('user');
//獲取`user`
表下一個(gè)添加的自動(dòng)增長(zhǎng)id
方法7、GetRow()
返回單條數(shù)據(jù),返回值為一維數(shù)組
GetRow
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`
WHERE
id=1");
//SQL方法,返回一維數(shù)組,例如:Array
(
[name]
=
焦焦
[email]
=
liruxing1715@sina.com
)
$data
=
$m-GetRow("SELECT
u.`name`,
u.email,
c.class_name
FROM
`user`
u,
`class`
c
WHERE
u.class_id=c.class_id
AND
u.id=1");
//SQL方法,多表查詢
$data
=
$m-GetRow('user',
'`name`,email',
"id=1");
//拼接方法
$data
=
$m-GetRow('user
as
u,`class`
c',
'u.`name`,u.email,c.class_name',
"u.id=1
AND
u.class_id=c.class_id");
//拼接方法,多表查詢
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`");
//如果沒有指定條件應(yīng)該是顯示全部信息,但是在此方法中將默認(rèn)顯示第一條(不推薦這么使用?。。。?/p>
$data
是查詢出來的一維數(shù)組。
方法8、GetOne()
返回單個(gè)數(shù)據(jù)
GetOne
方法的全部使用案例如下:
復(fù)制代碼
代碼如下:
$name
=
$m-GetOne("SELECT
`name`
FROM
`user`
WHERE
id=1");
//SQL方法,返回一個(gè)字符串,例如:焦焦
$name
=
$m-GetOne("user",
"name",
"id=1");
//拼接方法,返回一個(gè)字符串,例如:焦焦
方法9、FetchAll()
返回所有記錄
復(fù)制代碼
代碼如下:
$data
=
$m-FetchAll("user");
//返回`user`表中的所有記錄,以二維數(shù)組的形式
$data
=
$m-FetchAll("SELECT
*
FROM
`user`");
//SQL
方法,功能和返回值同上
$data
=
$m-FetchAll("user",
"name,email",
"id1",
'id
DESC',
'2');
//返回兩條id1的數(shù)據(jù),只顯示name,email,并且以id
為倒序排序。注:請(qǐng)注意該方法的最后一個(gè)參數(shù)也可以為'0,2',目的是為分頁準(zhǔn)備的,如果第一頁為'0,2'的話,那么第二頁就是'2,2'
//該方法也支持聯(lián)表查詢和多表查詢,下面以聯(lián)表查詢?yōu)槔?/p>
$data
=
$m-FetchAll("`user`
as
u
LEFT
JOIN
`class`
as
c
ON
u.class_id=c.class_id",
"u.`name`,u.email,
c.class_name",
"u.id=1");
//注意:該拼接方法中,ON
添加的位置
注:對(duì)于該
FetchAll
方法,后續(xù)我會(huì)寫一篇使用該方法進(jìn)行完美分頁的文章??!請(qǐng)關(guān)注。
方法10、MultiQuery()
執(zhí)行多條SQL語句
復(fù)制代碼
代碼如下:
$sql
=
"INSERT
INTO
user
(`name`,email,
age,
class_id,
commit_time)
VALUES
('賈花花',
'jiahuahua@sina.com.cn',
'22',
'1',
'".time()."')";
//添加一個(gè)名叫“賈花花”的學(xué)生信息
$sql
.=
";DELETE
FROM
`user`
WHERE
`name`='焦焦'";
//刪除一條名叫“焦焦”的學(xué)生信息
//解釋:$sql
是多條
SQL
以英文;(分號(hào))拼接起來的
$data
=
$m-MultiQuery($sql);
//返回為true,代表執(zhí)行成功;為false,代表執(zhí)行失敗
類庫講解完畢
到此該類庫的全部功能就講解完畢,希望你能多看看M文件,了解其內(nèi)部運(yùn)行的機(jī)制。M
文件不會(huì)存在執(zhí)行緩慢情況,請(qǐng)大家放心使用。
如果在使用過程中出現(xiàn)
SQL
拼接錯(cuò)誤,類庫會(huì)報(bào)出友善的錯(cuò)誤提示。
有問題請(qǐng)留言,歡迎大家的批評(píng)和建議,加油!學(xué)習(xí)好運(yùn)。
我也剛剛學(xué)PHP,正在研究中,雖然你只給10分........
首先,將代碼保存到一個(gè)文件,如:mysql.class.php
其次,在一個(gè)常用的文件里調(diào)用:比如頭部文件header.php,因?yàn)槲曳旁诟夸浰杂孟旅娣绞綄?dǎo)入其他文件:
require dirname(__FILE__) . 'include/config.php';
//導(dǎo)入類文件
require dirname(__FILE__) . 'include/mysql.class.php';
//定義一個(gè)類及初始化數(shù)據(jù)庫類
$db = new mysql($db_host, $db_user, $db_pass, $db_name);
$db_host = $db_user = $db_pass = $db_name = NULL;
然后,在test.php文件調(diào)用:
require_once dirname(__FILE__) . '/header.php';
使用方法:
$sql = "讀取表";
$res = $db-query($sql);
$info = array();//定義數(shù)組
while($row=$db-fetchRow($res))
{
$arr['id'] = $row['id'];
$arr['title'] = $row['title'];
$info[] = $arr;
}
可以在顯示的地方用:
foreach($info as $i)
{
echo $i['title']."br /";
}
或是直接使用while
還用另一種調(diào)用方式:
$here_area = $db-getRow("select areaid,areaname from {$table}area where areaid='$areaid'");
$here[] = array('name'=$here_area['areaname'],'id'=$here_area['areaid']);
測(cè)試通過,因?yàn)槲艺谑褂?....................................
config.php代碼:
?php
$db_host = "localhost";
$db_name = "test";
$db_user = "root";
$db_pass = "";
$table = "mini_";
$charset = "gb2312";
$dbcharset = "gbk";
?
mysql.class.php代碼:
?php
class mysql
{
var $link = NULL;
//自動(dòng)執(zhí)行__construct php5類構(gòu)建方法,如果PHP4和PHP5同時(shí)使用會(huì)自動(dòng)使用PHP5的方法
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
//自動(dòng)執(zhí)行時(shí)調(diào)用mysql函數(shù)
$this-mysql($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
//php4類構(gòu)建方法,如果沒有 __construct 就自動(dòng)執(zhí)行此功能
function mysql($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
if ($quiet)
{
$this-connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
else
{
$this-settings = array(
'dbhost' = $dbhost,
'dbuser' = $dbuser,
'dbpw' = $dbpw,
'dbname' = $dbname,
'charset' = $charset,
'pconnect' = $pconnect
);
}
}
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
global $dbcharset;
if ($pconnect)
{
if (!($this-link = @mysql_pconnect($dbhost, $dbuser, $dbpw)))
{
if (!$quiet)
{
$this-ErrorMsg("Can't pConnect MySQL Server($dbhost)!");
}
return false;
}
}
else
{
if (PHP_VERSION = '4.2')
{
$this-link = @mysql_connect($dbhost, $dbuser, $dbpw, true);
}
else
{
$this-link = @mysql_connect($dbhost, $dbuser, $dbpw);
mt_srand((double)microtime() * 1000000);
}
if (!$this-link)
{
if (!$quiet)
{
$this-ErrorMsg("Can't Connect MySQL Server($dbhost)!");
}
return false;
}
}
$this-dbhash = md5($this-root_path . $dbhost . $dbuser . $dbpw . $dbname);
$this-version = mysql_get_server_info($this-link);
if ($this-version '4.1')
{
if ($dbcharset != 'latin1')
{
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this-link);
}
if ($this-version '5.0.1')
{
mysql_query("SET sql_mode=''", $this-link);
}
}
if ($dbname)
{
if (mysql_select_db($dbname, $this-link) === false )
{
if (!$quiet)
{
$this-ErrorMsg("Can't select MySQL database($dbname)!");
}
return false;
}
else
{
return true;
}
}
else
{
return true;
}
}
function query($sql, $type = '')
{
if ($this-link === NULL)
{
$this-connect($this-settings['dbhost'], $this-settings['dbuser'], $this-settings['dbpw'], $this-settings['dbname'], $this-settings['charset'], $this-settings['pconnect']);
$this-settings = array();
}
if ($this-queryCount++ = 99)
{
$this-queryLog[] = $sql;
}
if ($this-queryTime == '')
{
if (PHP_VERSION = '5.0.0')
{
$this-queryTime = microtime(true);
}
else
{
$this-queryTime = microtime();
}
}
if (!($query = mysql_query($sql, $this-link)) $type != 'SILENT')
{
$this-error_message[]['message'] = 'MySQL Query Error';
$this-error_message[]['sql'] = $sql;
$this-error_message[]['error'] = mysql_error($this-link);
$this-error_message[]['errno'] = mysql_errno($this-link);
$this-ErrorMsg();
return false;
}
return $query;
}
function affected_rows()
{
return mysql_affected_rows($this-link);
}
function num_fields($query)
{
return mysql_num_fields($query);
}
function error()
{
return mysql_error($this-link);
}
function errno()
{
return mysql_errno($this-link);
}
function num_rows($query)
{
return mysql_num_rows($query);
}
function insert_id()
{
return mysql_insert_id($this-link);
}
function fetchRow($query)
{
return mysql_fetch_assoc($query);
}
function fetcharray($query)
{
return mysql_fetch_array($query);
}
function version()
{
return $this-version;
}
function close()
{
return mysql_close($this-link);
}
function ErrorMsg($message = '', $sql = '')
{
if ($message)
{
echo "$message\n\n";
}
else
{
echo "bMySQL server error report:";
print_r($this-error_message);
}
exit;
}
function getCol($sql)
{
$res = $this-query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_row($res))
{
$arr[] = $row[0];
}
return $arr;
}
else
{
return false;
}
}
function getOne($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}
$res = $this-query($sql);
if ($res !== false)
{
$row = mysql_fetch_row($res);
if ($row !== false)
{
return $row[0];
}
else
{
return '';
}
}
else
{
return false;
}
}
function getAll($sql)
{
$res = $this-query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_assoc($res))
{
$arr[] = $row;
}
return $arr;
}
else
{
return false;
}
}
//使用: getRow($sql,true) 如果有true那值是 limit 1,讀取一條信息
function getRow($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}
$res = $this-query($sql);
if ($res !== false)
{
return mysql_fetch_assoc($res);
}
else
{
return false;
}
}
}
?
thinkphp連接數(shù)據(jù)庫的方法:
ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫訪問層,把不同的數(shù)據(jù)庫操作封裝起來,只需要使用公共的Db類進(jìn)行操作,而無需針對(duì)不同的數(shù)據(jù)庫寫不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)來處理。目前的數(shù)據(jù)庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對(duì)PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫,必須配置數(shù)據(jù)庫連接信息,數(shù)據(jù)庫的配置文件有多種定義方式。
常用的配置方式是在項(xiàng)目配置文件中添加下面的參數(shù):
?php
//項(xiàng)目配置文件
return array(
//數(shù)據(jù)庫配置信息
'DB_TYPE' = 'mysql', // 數(shù)據(jù)庫類型
'DB_HOST' = 'localhost', // 服務(wù)器地址
'DB_NAME' = 'thinkphp', // 數(shù)據(jù)庫名
'DB_USER' = 'root', // 用戶名
'DB_PWD' = '', // 密碼
'DB_PORT' = 3306, // 端口
'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫表前綴
//其他項(xiàng)目配置參數(shù)
// ...
);
需要注意的是,ThinkPHP的數(shù)據(jù)庫連接的惰性的,所以并不是在實(shí)例化的時(shí)候就連接數(shù)據(jù)庫,而是在有實(shí)際的數(shù)據(jù)操作的時(shí)候才會(huì)去連接數(shù)據(jù)庫(額外的情況是,在系統(tǒng)第一次實(shí)例化模型的時(shí)候,會(huì)自動(dòng)連接數(shù)據(jù)庫獲取相關(guān)模型類對(duì)應(yīng)的數(shù)據(jù)表的字段信息)。
連接數(shù)據(jù)庫 ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫訪問層,把不同的數(shù)據(jù)庫操作封裝起來,我們只需要使用公共的Db類進(jìn)行操作,而無需針對(duì)不同的數(shù)據(jù)庫寫不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫適配器來處理。目前的數(shù)據(jù)庫包括Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase以及PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫,必須配置數(shù)據(jù)庫連接信息,數(shù)據(jù)庫的配置文件有多種定義方式:
第一種 在項(xiàng)目配置文件里面定義
return array(
'DB_TYPE'= 'mysql',
'DB_HOST'= 'localhost',
'DB_NAME'='thinkphp',
'DB_USER'='root',
'DB_PWD'='',
'DB_PORT'='3306',
'DB_PREFIX'='think_',
// 其他項(xiàng)目配置參數(shù)………
);
系統(tǒng)推薦使用該種方式,因?yàn)橐话阋粋€(gè)項(xiàng)目的數(shù)據(jù)庫訪問配置是相同的。該方法系統(tǒng)在連接數(shù)據(jù)庫的時(shí)候會(huì)自動(dòng)獲取,無需手動(dòng)連接。
可以對(duì)每個(gè)項(xiàng)目定義不同的數(shù)據(jù)庫連接信息,還可以在調(diào)試配置文件(Conf/debug.php)里面定義調(diào)試數(shù)據(jù)庫的配置信息,如果在項(xiàng)目配置文件和調(diào)試模式配置文件里面同時(shí)定義了數(shù)據(jù)庫連接信息,那么在調(diào)試模式下面后者生效,部署模式下面前者生效。
第二種 使用DSN方式在初始化Db類的時(shí)候傳參數(shù)
$db_dsn = “mysql://username:passwd@localhost:3306/DbName”;
$db = new Db($db_dsn);
該方式主要用于在控制器里面自己手動(dòng)連接數(shù)據(jù)庫的情況,或者用于創(chuàng)建多個(gè)數(shù)據(jù)庫連接。
第三種 使用數(shù)組傳參數(shù)
$DSN = array(
'dbms' = 'mysql',
'username' = 'username',
'password' = 'password',
'hostname' = ; 'localhost',
'hostport' = '3306',
'database' = 'dbname'
);
$db = new Db($DSN);
該方式也是用于手動(dòng)連接數(shù)據(jù)庫的情況,或者用于創(chuàng)建多個(gè)數(shù)據(jù)庫連接。
第四種 在模型類里面定義
protected $connection = array(
'dbms' = 'mysql',
'username' = 'username',
'password' = 'password',
'hostname' = 'localhost',
'hostport' = '3306',
'database' = 'dbname'
);
// 或者使用下面的定義
protected $connection = ”mysql://username:passwd@localhost:3306/DbName”;
如果在某個(gè)模型類里面定義了connection屬性,則在實(shí)例化模型對(duì)象的時(shí)候,會(huì)使用該數(shù)據(jù)庫連接信息進(jìn)行數(shù)據(jù)庫連接。通常用于某些數(shù)據(jù)表位于當(dāng)前數(shù)據(jù)庫連接之外的其它數(shù)據(jù)庫。
ThinkPHP并不是在一開始就會(huì)連接數(shù)據(jù)庫,而是在有數(shù)據(jù)查詢操作的時(shí)候才會(huì)去連接數(shù)據(jù)庫。額外的情況是,在系統(tǒng)第一次操作模型的時(shí)候,框架會(huì)自動(dòng)連接數(shù)據(jù)庫獲取相關(guān)模型類的數(shù)據(jù)字段信息,并緩存下來。
(字段緩存目錄:Runtime/Data/_fields)
ThinkPHP支持PDO方式,如果要使用PDO方式連接數(shù)據(jù)庫,可以參考下面的設(shè)置。
我們以項(xiàng)目配置文件定義為例來說明:
return array(
'DB_TYPE'= 'pdo',
// 注意DSN的配置針對(duì)不同的數(shù)據(jù)庫有所區(qū)別 請(qǐng)參考PHP手冊(cè)PDO類庫部分
'DB_DSN'= 'mysql:host=localhost;dbname=think',
'DB_USER'='root',
'DB_PWD'='',
'DB_PREFIX'='think_',
// 其他項(xiàng)目配置參數(shù)………
);
使用PDO方式的時(shí)候,要注意檢查是否開啟相關(guān)的PDO模塊。DB_DSN參數(shù)僅對(duì)PDO方式連接才有效。