新聞中心
CI(Code Igniter)框架是一款輕量級(jí)、快速、簡(jiǎn)單易用的PHP框架,廣受開(kāi)發(fā)者的喜愛(ài)。在CI框架的數(shù)據(jù)庫(kù)操作方面,提供了很多便捷的工具和技巧,本文將會(huì)深入剖析CI框架的數(shù)據(jù)庫(kù)操作技巧,幫助大家更好的使用CI框架。

石鼓網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),石鼓網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為石鼓成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的石鼓做網(wǎng)站的公司定做!
一、連接CI框架數(shù)據(jù)庫(kù)
連接CI框架數(shù)據(jù)庫(kù)需要在數(shù)據(jù)庫(kù)配置文件database.php中配置連接信息。位于/config/database.php。在這個(gè)文件中,我們需要配置數(shù)據(jù)庫(kù)連接和默認(rèn)使用數(shù)據(jù)庫(kù),將以下配置改成自己的數(shù)據(jù)庫(kù)信息。
“`php
$database[‘default’] = array(
‘dsn’ => ”,
‘hostname’ => ‘localhost’,
‘username’ => ‘root’,
‘password’ => ”,
‘database’ => ‘mydatabase’,
…
);
“`
配置完成后,我們就可以在控制器中使用以下代碼來(lái)連接數(shù)據(jù)庫(kù)了。
“`php
$this->load->database();
“`
如果您需要連接其他數(shù)據(jù)庫(kù), 可以使用以下命令
“`php
$DB2 = $this->load->database(‘otherdb’, TRUE);
“`
`otherdb`是數(shù)據(jù)庫(kù)配置文件中的其中一個(gè)數(shù)據(jù)庫(kù)項(xiàng)的名稱(chēng)。通過(guò)設(shè)置第二個(gè)參數(shù)為T(mén)RUE(布爾類(lèi)型)來(lái)告訴CI你希望返回?cái)?shù)據(jù)庫(kù)對(duì)象,而不是默認(rèn)的結(jié)果。
二、查詢(xún)CI框架數(shù)據(jù)庫(kù)
在CI框架的數(shù)據(jù)庫(kù)查詢(xún)方式中,提供了三種查詢(xún)方法。分別是CI框架QueryBuilder類(lèi)庫(kù)、Active Record類(lèi)和原生SQL語(yǔ)句。
1、QueryBuilder類(lèi)庫(kù)
QueryBuilder類(lèi)庫(kù)是CI框架查詢(xún)的核心庫(kù),它提供了精簡(jiǎn)的API,是非常簡(jiǎn)單易讀的查詢(xún)方式。以下是一個(gè)QueryBuilder的使用示例:
“`php
$this->db->select(‘title, content, date’);
$this->db->from(‘mytable’);
$this->db->where(‘id’, $id);
$this->db->limit(10);
$query = $this->db->get();
“`
上述代碼通過(guò)調(diào)用select、from、where和limit等函數(shù)來(lái)組合生成一條SQL查詢(xún)語(yǔ)句。CI框架將調(diào)用get函數(shù),然后執(zhí)行SQL查詢(xún),返回查詢(xún)結(jié)果。
2、Active Record類(lèi)
相比QueryBuilder類(lèi)庫(kù),在Active Record類(lèi)中,查詢(xún)操作是更高級(jí)的方式。其API更加復(fù)雜,功能更加強(qiáng)大,比如支持多表連接查詢(xún)。以下是Active Record類(lèi)的使用示例:
“`php
$this->db->select(‘title, content, date’);
$this->db->from(‘mytable’);
$this->db->join(‘a(chǎn)nother_table’, ‘a(chǎn)nother_table.id = mytable.id’);
$this->db->where(‘id’, $id);
$this->db->where(‘date
$this->db->group_by(‘title’);
$this->db->limit(10);
$query = $this->db->get();
“`
這段代碼將生成一個(gè)包含多個(gè)條件限制(where、join、group_by)的Active Record查詢(xún)語(yǔ)句。SQL查詢(xún)由CI框架驅(qū)動(dòng)器提供,并且結(jié)果將存儲(chǔ)在結(jié)果數(shù)組中。這個(gè)Active Record類(lèi)提供了很多快捷的查詢(xún)方法,可以根據(jù)不同的業(yè)務(wù)需求快速完成查詢(xún)邏輯。
3、原生SQL
原生SQL語(yǔ)句是最直接的框架查詢(xún)方式。在CI框架中,可以使用query函數(shù)執(zhí)行這樣的查詢(xún),并返回查詢(xún)結(jié)果集。
“`php
$query = $this->db->query(“SELECT `title` FROM `mytable` WHERE `id` = ‘1’”);
“`
在這個(gè)例子中直接使用SQL語(yǔ)句執(zhí)行查詢(xún)。
三、執(zhí)行CI框架數(shù)據(jù)庫(kù)的事務(wù)
CI框架提供了一個(gè)簡(jiǎn)單的事務(wù)處理方式,簡(jiǎn)單易懂。通過(guò)設(shè)置數(shù)據(jù)庫(kù)主驅(qū)動(dòng)器和事務(wù)處理腳本即可。以下是一個(gè)使用事務(wù)會(huì)話(huà)的代碼示例:
“`php
$this->db->trans_start();
$this->db->query(‘AN SQL QUERY…’);
$this->db->query(‘ANOTHER QUERY…’);
$this->db->trans_complete();
“`
在這段代碼中,我們使用 $this->db->trans_start() 開(kāi)始事務(wù),然后依次執(zhí)行兩個(gè)SQL語(yǔ)句,最后使用 $this->db->trans_complete() 結(jié)束事務(wù)。其中,如果事務(wù)執(zhí)行失敗,整個(gè)過(guò)程就會(huì)被回滾,來(lái)保證數(shù)據(jù)的一致性。
四、查詢(xún)CI框架中的結(jié)果集
在使用CI框架的查詢(xún)操作之后,得到的是一個(gè)查詢(xún)結(jié)果集對(duì)象。有些情況下,我們需要從結(jié)果集對(duì)象中獲取數(shù)據(jù)。這時(shí)可以使用CI框架的result()、result_array()、row()和row_array()函數(shù)。
1、result()
result()函數(shù)將結(jié)果集以對(duì)象的形式返回,這些對(duì)象具有與被查詢(xún)表列名相同的屬性。
“`php
$query = $this->db->query(“SELECT * FROM my_table”);
foreach ($query->result() as $row)
{
echo $row->title;
}
“`
通過(guò)前置循環(huán),可以遍歷并輸出結(jié)果。
2、result_array()
與 result() 相關(guān)的函數(shù)是 result_array(),它以代表每一行記錄的關(guān)聯(lián)數(shù)組形式返回結(jié)果集。數(shù)組索引將對(duì)應(yīng)的是表的列名。
“`php
$query = $this->db->query(“SELECT * FROM my_table”);
foreach ($query->result_array() as $row)
{
echo $row[‘title’];
}
“`
3、row()
row() 返回結(jié)果集中的單個(gè)行。如果你調(diào)用了該函數(shù)的多個(gè)次數(shù),他返回的分別是結(jié)果集的各行行。
“`php
$query = $this->db->query(“SELECT * FROM my_table LIMIT 1”);
$row = $query->row();
echo $row->title;
“`
4、row_array()
row_array()函數(shù)以關(guān)聯(lián)數(shù)組的形式返回的結(jié)果集中的單個(gè)行。如果你調(diào)用了該函數(shù)的多個(gè)次數(shù),他返回的分別是結(jié)果集的各行行。
“`php
$query = $this->db->query(“SELECT * FROM my_table LIMIT 1”);
$row = $query->row_array();
echo $row[‘title’];
“`
五、設(shè)置, 更新和刪除數(shù)據(jù)
在CI框架中, 除了查詢(xún)操作, 還有對(duì)數(shù)據(jù)執(zhí)行添加,更新,和刪除操作。為了實(shí)現(xiàn)這些操作,CI框架提供了active record類(lèi)庫(kù)。該類(lèi)提供了快捷的方法來(lái)設(shè)置,更新和刪除數(shù)據(jù)。以下是一個(gè)簡(jiǎn)單的用法示例:
“`php
$data = array(
‘name’ => $name,
’eml’ => $eml,
‘url’ => $url,
);
$this->db->insert(‘mytable’, $data);
“`
這個(gè)代碼將在mytable表中插入名字、郵箱和 URL 數(shù)據(jù)。`insert()` 函數(shù)初始化一個(gè) INSERT 查詢(xún),使用表示數(shù)據(jù)的關(guān)聯(lián)數(shù)組填充數(shù)據(jù)。我們可以將其他數(shù)據(jù)類(lèi)型添加到數(shù)據(jù)中以適應(yīng)預(yù)期的表列類(lèi)型。
以下示例中的代碼將更新表中的數(shù)據(jù):
“`php
$data = array(
‘name’ => $name,
’eml’ => $eml,
‘url’ => $url
);
$this->db->where(‘id’, $id);
$this->db->update(‘mytable’, $data);
“`
在這個(gè)例子中,我們通過(guò)調(diào)用 `update()` 函數(shù),將id為 $id 的行的數(shù)據(jù)更新為 $data 數(shù)組中的值。update函數(shù)打開(kāi) UPDATE 查詢(xún),為運(yùn)行中語(yǔ)句添加更新后的數(shù)據(jù)字段。同樣,我們可以將其他數(shù)據(jù)類(lèi)型添加到數(shù)組中以適應(yīng)預(yù)期的列類(lèi)型
刪除操作和更新操作非常相似。您可以使用一般的向量和關(guān)聯(lián)數(shù)組使用它:
“`php
$this->db->delete(‘mytable’, array(‘id’ => $id));
“`
這個(gè)代碼將從mytable中刪除 id 等于 $id 的行。
六、處理CI框架數(shù)據(jù)庫(kù)的事務(wù)
在應(yīng)用程序中,事務(wù)是處理的常見(jiàn)需求。事務(wù)可以確保在多個(gè)相關(guān)操作之間保持?jǐn)?shù)據(jù)完整性和一致性。事務(wù)必須滿(mǎn)足ACID屬性:原子性、一致性、隔離性和持久性。
在CI框架中,事務(wù)可以使用如下方式開(kāi)啟、提交和回滾。
“`php
$this->db->trans_start();
// SQL 1
// SQL 2
$q1 = $this->db->query(‘YOUR QUERY HERE’);
$q2 = $this->db->query(‘YOUR QUERY HERE’);
$q3 = $this->db->query(‘YOUR QUERY HERE’);
$this->db->trans_complete();
“`
在這段代碼中,我們?cè)谑聞?wù)開(kāi)始和結(jié)束之間給出每個(gè) SQL 查詢(xún)。如果事務(wù)無(wú)法成功進(jìn)行,將回滾所有執(zhí)行過(guò)的 SQL 查詢(xún)。如果在事務(wù)內(nèi)部的所有 SQL 查詢(xún)都成功執(zhí)行,那么 commit() 函數(shù)將被調(diào)用來(lái)提交事務(wù)。
在這個(gè)示例中,$q1、$q2 和 $q3 分別是輸入語(yǔ)句的 SQL 查詢(xún)對(duì)象。請(qǐng)注意,如果在提交時(shí)發(fā)生錯(cuò)誤, 當(dāng)前事務(wù)必須回滾。在任何情況下,建議使用 trans_complete 函數(shù)。
結(jié)語(yǔ)
通過(guò)本文的介紹,相信讀者已經(jīng)對(duì)CI框架的數(shù)據(jù)庫(kù)操作有了更深入的了解。CI框架封裝了復(fù)雜的數(shù)據(jù)庫(kù)操作,方便我們的編程。在實(shí)際開(kāi)發(fā)中,可以根據(jù)業(yè)務(wù)需求,選擇合適的查詢(xún)方式。同時(shí),業(yè)務(wù)流程處理的過(guò)程中,需要始終關(guān)注數(shù)據(jù)一致性,使用事務(wù)協(xié)調(diào)各操作的執(zhí)行,有效保證數(shù)據(jù)的正確性。CI框架是一個(gè)非常實(shí)用的框架,值得在項(xiàng)目中應(yīng)用。
相關(guān)問(wèn)題拓展閱讀:
- 在數(shù)據(jù)庫(kù)整理這個(gè)什么意思gbk_chinese_ci
在數(shù)據(jù)庫(kù)整理這個(gè)什么意思gbk_chinese_ci
mysql數(shù)據(jù)庫(kù)?
排序的規(guī)則跡宴辯:祥鍵Gbk_chinese_ci是按照普通的字母順序排,姿缺而且不區(qū)分大小寫(xiě)。gbk_bin 是按照二進(jìn)制排序。
ci 數(shù)據(jù)庫(kù)操作的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于ci 數(shù)據(jù)庫(kù)操作,深入理解CI框架的數(shù)據(jù)庫(kù)操作技巧,在數(shù)據(jù)庫(kù)整理這個(gè)什么意思gbk_chinese_ci的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),1500元定制網(wǎng)站優(yōu)化全包,先排名后付費(fèi),已為上千家服務(wù),聯(lián)系電話(huà):13518219792
網(wǎng)站標(biāo)題:深入理解CI框架的數(shù)據(jù)庫(kù)操作技巧(ci數(shù)據(jù)庫(kù)操作)
分享鏈接:http://m.fisionsoft.com.cn/article/cogijsg.html


咨詢(xún)
建站咨詢(xún)
