ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫訪問層,把不同的數(shù)據(jù)庫操作封裝起來,我們只需要使用公共的Db類進行操作,而無需針對不同的數(shù)據(jù)庫寫不同的代碼和底層實現(xiàn),Db類會自動調(diào)用相應(yīng)的數(shù)據(jù)庫驅(qū)動來處理。目前的數(shù)據(jù)庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫,必須配置數(shù)據(jù)庫連接信息,數(shù)據(jù)庫的配置文件有多種定義方式。
站在用戶的角度思考問題,與客戶深入溝通,找到任縣網(wǎng)站設(shè)計與任縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋任縣地區(qū)。
常用的配置方式是在項目配置文件中添加下面的參數(shù):
?php
//項目配置文件
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ù)庫表前綴
//其他項目配置參數(shù)
// ...
);
或者采用如下配置
'DB_DSN' = 'mysql://username:password@localhost:3306/DbName'
使用DB_DSN方式定義可以簡化配置參數(shù),DSN參數(shù)格式為:
數(shù)據(jù)庫類型://用戶名:密碼@數(shù)據(jù)庫地址:數(shù)據(jù)庫端口/數(shù)據(jù)庫名
如果兩種配置參數(shù)同時存在的話,DB_DSN配置參數(shù)優(yōu)先。
注意:如果要設(shè)置分布式數(shù)據(jù)庫,暫時不支持DB_DSN方式配置。1
如果采用PDO驅(qū)動的話,則必須首先配置DB_TYPE 為pdo,然后還需要單獨配置其他參數(shù),例如:
//PDO連接方式
'DB_TYPE' = 'pdo', // 數(shù)據(jù)庫類型
'DB_USER' = 'root', // 用戶名
'DB_PWD' = '', // 密碼
'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫表前綴
'DB_DSN' = 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'
注意:PDO方式的DB_DSN配置格式有所區(qū)別,根據(jù)不同的數(shù)據(jù)庫類型設(shè)置有所不同。
配置文件定義的數(shù)據(jù)庫連接信息一般是系統(tǒng)默認采用的,因為一般一個項目的數(shù)據(jù)庫訪問配置是相同的。該方法系統(tǒng)在連接數(shù)據(jù)庫的時候會自動獲取,無需手動連接。
可以對每個項目和不同的分組定義不同的數(shù)據(jù)庫連接信息,如果開啟了調(diào)試模式的話,還可以在不同的應(yīng)用狀態(tài)的配置文件里面定義獨立的數(shù)據(jù)庫配置信息。1
第二種 在模型類里面定義connection屬性
如果在某個模型類里面定義了connection屬性的話,則實例化該自定義模型的時候會采用定義的數(shù)據(jù)庫連接信息,而不是配置文件中設(shè)置的默認連接信息,通常用于某些數(shù)據(jù)表位于當(dāng)前數(shù)據(jù)庫連接之外的其它數(shù)據(jù)庫,例如:
//在模型里單獨設(shè)置數(shù)據(jù)庫連接信息
protected $connection = array(
'db_type' = 'mysql',
'db_user' = 'root',
'db_pwd' = '1234',
'db_host' = 'localhost',
'db_port' = '3306',
'db_name' = 'thinkphp'
);
也可以采用DSN方式定義,例如:
//或者使用DSN定義
protected $connection = 'mysql://root:1234@localhost:3306/thinkphp';
如果我們已經(jīng)在配置文件中配置了額外的數(shù)據(jù)庫連接信息,例如:
//數(shù)據(jù)庫配置1
'DB_CONFIG1' = array(
'db_type' = 'mysql',
'db_user' = 'root',
'db_pwd' = '1234',
'db_host' = 'localhost',
'db_port' = '3306',
'db_name' = 'thinkphp'
),
//數(shù)據(jù)庫配置2
'DB_CONFIG2' = 'mysql://root:1234@localhost:3306/thinkphp';
那么,我們可以把模型類的屬性定義改為:
//調(diào)用配置文件中的數(shù)據(jù)庫配置1
protected $connection = 'DB_CONFIG1';
//調(diào)用配置文件中的數(shù)據(jù)庫配置2
protected $connection = 'DB_CONFIG2';
如果采用的是M方法實例化模型的話,也可以支持傳入不同的數(shù)據(jù)庫連接信息,例如:
$User = M('User','other_','mysql://root:1234@localhost/demo');
表示實例化User模型,連接的是demo數(shù)據(jù)庫的other_user表,采用的連接信息是第三個參數(shù)配置的。如果我們在項目配置文件中已經(jīng)配置了DB_CONFIG2的話,也可以采用:
$User = M('User','other_','DB_CONFIG2');
如果你的個別數(shù)據(jù)表沒有定義任何前綴的話,可以在前綴參數(shù)中傳入NULL,例如:
$User = M('User',Null,'DB_CONFIG2');
表示實例化User模型,連接的是demo數(shù)據(jù)庫的user表。
需要注意的是,ThinkPHP的數(shù)據(jù)庫連接的惰性的,所以并不是在實例化的時候就連接數(shù)據(jù)庫,而是在有實際的數(shù)據(jù)操作的時候才會去連接數(shù)據(jù)庫(額外的情況是,在系統(tǒng)第一次實例化模型的時候,會自動連接數(shù)據(jù)庫獲取相關(guān)模型類對應(yīng)的數(shù)據(jù)表的字段信息)。
把來自表單的數(shù)據(jù)插入數(shù)據(jù)庫
現(xiàn)在,我們創(chuàng)建一個 HTML 表單,這個表單可把新記錄插入 "Persons" 表。
這是這個 HTML 表單:
1
2
3
4
5
6
7
8
9
10
11
12
html
body
form action="insert.php" method="post"
Firstname: input type="text" name="firstname" /
Lastname: input type="text" name="lastname" /
Age: input type="text" name="age" /
input type="submit" /
/form
/body
/html
當(dāng)用戶點擊上例中 HTML 表單中的提交按鈕時,表單數(shù)據(jù)被發(fā)送到 "insert.php"。"insert.php" 文件連接數(shù)據(jù)庫,并通過 $_POST 變量從表單取回值。然后,mysql_query() 函數(shù)執(zhí)行 INSERT INTO 語句,一條新的記錄會添加到數(shù)據(jù)庫表中。
下面是 "insert.php" 頁面的代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?
建立數(shù)據(jù)庫:
步驟:核心-頻道模式-內(nèi)容模型管理,添加一個內(nèi)容模塊(手動添加你需要的數(shù)據(jù)字段)然后建立.demo.php文件(demo自己命名),寫一個數(shù)據(jù)入庫操作(如果你的網(wǎng)站要處理大數(shù)據(jù)量的訪問的話,建議封裝函數(shù))。其中(數(shù)據(jù)主表:dede_archives
數(shù)據(jù)索引:dede_arctiny)和你添加的新表對應(yīng)字段才能進行入庫操作,但織夢的各個版本不同,字段也不同,需要樓主自己考慮,數(shù)據(jù)入庫之后,就好辦了。
添加
核心-網(wǎng)站欄目管理,添加你的需求欄目,這樣就可以在織夢后臺讀取你的訂單了。
如果想前臺讀取的話,我想這個就比較簡單了,你自己可以解決的。
不懂的話,請再追問
網(wǎng)站題目:php數(shù)據(jù)庫管理單文件 php的數(shù)據(jù)庫在哪個目錄下
轉(zhuǎn)載注明:http://bm7419.com/article34/dohgipe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站設(shè)計公司、App開發(fā)、營銷型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)