鑰匙要點(diǎn)
- > mongoDB是一個(gè)面向文檔的NOSQL數(shù)據(jù)庫(kù),可增強(qiáng)性能和可伸縮性,使其非常適合可以輕鬆管理集合和文檔的博客應(yīng)用程序。 php mongodb驅(qū)動(dòng)程序?qū)秾HP應(yīng)用程序連接到MongoDB至關(guān)重要,直接從PHP腳本進(jìn)行CRUD操作。
- >可以使用HTTP Auth對(duì)博客的管理部分實(shí)現(xiàn)簡(jiǎn)單的用戶(hù)身份驗(yàn)證,儘管對(duì)於更強(qiáng)大的應(yīng)用程序,建議使用全面的身份驗(yàn)證框架。 >博客應(yīng)用程序利用基本的CRUD操作來(lái)管理博客文章,並具有其他評(píng)論功能,所有功能都存儲(chǔ)在MongoDB Collections中。
- 應(yīng)用程序結(jié)構(gòu)包括用於管理任務(wù)和視圖的單獨(dú)目錄和文件,促進(jìn)了一種簡(jiǎn)單的MVC架構(gòu)形式,可以使用全尺度框架進(jìn)一步開(kāi)發(fā)。
- 簡(jiǎn)介
- 如果您想使用MongoDB和PHP創(chuàng)建博客,則本文將教您:
連接到mongoDB數(shù)據(jù)庫(kù)
>在集合中保存文檔
- >集合中的查詢(xún)文檔
- >執(zhí)行範(fàn)圍查詢(xún)
- 排序文檔,更新文檔,從集合中刪除一個(gè)或多個(gè)文檔
- 我之所以選擇構(gòu)建博客應(yīng)用程序的原因是因?yàn)樗且粋€(gè)基本的CRUD應(yīng)用程序,非常適合放鬆PHP和MongoDB Web開(kāi)發(fā)。我們將使用帶有簡(jiǎn)單文本框和按鈕的Bootstrap構(gòu)建一個(gè)普通的用戶(hù)界面。 MongoDB數(shù)據(jù)庫(kù)將存儲(chǔ)所有內(nèi)容。您可以從GitHub下載完整源,請(qǐng)參閱此處的演示前端,然後嘗試使用演示應(yīng)用程序的後端,並使用用戶(hù)名和密碼為 duythien
- 。 什麼是mongodb
> > mongoDB概念:數(shù)據(jù)庫(kù),收集和文檔>
數(shù)據(jù)庫(kù):MongoDB以與大多數(shù)關(guān)係數(shù)據(jù)庫(kù)相同的方式將數(shù)據(jù)分組到數(shù)據(jù)庫(kù)中。如果您對(duì)關(guān)係數(shù)據(jù)庫(kù)有任何經(jīng)驗(yàn),則應(yīng)以相同的方式考慮這些。在RDBMS中,數(shù)據(jù)庫(kù)是一組表,存儲(chǔ)過(guò)程,視圖等。在MongoDB中,數(shù)據(jù)庫(kù)是一組集合。 MongoDB數(shù)據(jù)庫(kù)包含一個(gè)或多個(gè)集合。例如,名為博客的博客應(yīng)用程序的數(shù)據(jù)庫(kù)通??赡芫哂惺詹匚恼?,作者,評(píng)論,類(lèi)別等。集合:集合等效於RDBMS表。一個(gè)數(shù)據(jù)庫(kù)中存在一個(gè)集合。收集不執(zhí)行模式。集合中的文檔可以具有不同的字段。通常,集合中的所有文檔都有相似或相關(guān)的目的。
這是蒙哥安裝在Ubuntu Linux上的方式。打開(kāi)終端並執(zhí)行以下操作:
現(xiàn)在發(fā)布以下命令以更新您的存儲(chǔ)庫(kù)並安裝MongoDB的最新穩(wěn)定版本:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 # echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
完成,您已經(jīng)成功安裝了MongoDB?,F(xiàn)在,通過(guò)下面的命令行啟動(dòng)和停止服務(wù)MongoDB。
>sudo apt-get update sudo apt-get install mongodb-10gen如果開(kāi)始錯(cuò)誤嘗試運(yùn)行以下命令:
以下描述瞭如何在Windows上安裝它:
sudo service mongodb start sudo service mongodb stop
>前往MongoDB官方網(wǎng)站上的下載頁(yè)面。單擊Windows下的最新穩(wěn)定版本的下載鏈接。
> 下載完成後,提取並將其移至c:。 MongoDB需要一個(gè)數(shù)據(jù)文件夾來(lái)存儲(chǔ)其文件。 MongoDB數(shù)據(jù)目錄的默認(rèn)位置是C:DatadB。如果不存在,請(qǐng)創(chuàng)建它。sudo mongod --fork --logpath /var/log/mongodb/mongodb.log #or sudo mongod -f /etc/mongodb.conf
啟動(dòng)mongodb,從命令提示符
執(zhí)行完成,您已經(jīng)成功安裝了MongoDB?,F(xiàn)在,通過(guò)下面的命令行啟動(dòng)和停止服務(wù)MongoDB。
>
>安裝MongoDB
的PHP驅(qū)動(dòng)程序C:\> cd \mongodb\bin C:\mongodb\bin> mongod> MongoDB服務(wù)器構(gòu)建是為了與您當(dāng)前的Web服務(wù)器一起使用,但不能使用PHP。要與MongoDB服務(wù)器進(jìn)行PHP通話(huà),我們將需要PHP-MongoDB驅(qū)動(dòng)程序。這是一個(gè)PHP擴(kuò)展庫(kù)。
如果您使用Linux輕鬆通過(guò):
net start MongoDB net stop MongoDB來(lái)安裝它
>添加行擴(kuò)展名= mongo。
>重新啟動(dòng)您的Web服務(wù)器,並通過(guò)命令行驗(yàn)證:
sudo pecl install mongo>在Windows上安裝驅(qū)動(dòng)程序
>讓我們嘗試在Apache(XAMPP)上運(yùn)行PHP 5.4的Windows計(jì)算機(jī)上安裝驅(qū)動(dòng)程序:
sudo -i echo 'extension=mongo.so' >> /etc/php5/apache2/php.ini
- >下載zip存檔https://github.com/mongodb/mongo-php-driver/downloads在您的機(jī)器上並提取。 >將php_mongo.dll文件從提取的文件夾複製到php擴(kuò)展目錄(c:xamppphpext)。
- >打開(kāi)PHP安裝內(nèi)的php.ini文件,並添加以下行:Extension = php_mongo.dll
- >保存文件並將其關(guān)閉。重新啟動(dòng)Xamp。
- >打開(kāi)您的文本編輯器,然後將以下代碼添加到新文件中:,將文件保存為phpinfo.php,在Apache Web服務(wù)器(HTDOC)的DocumentRoot內(nèi)部,並打開(kāi)PHP瀏覽器中的腳本。如果您在PHP信息中看到Mongo,則安裝成功。
- >
的mongo Web開(kāi)發(fā)
連接到MongoDB數(shù)據(jù)庫(kù)服務(wù)器從PHP連接到MongoDB的
>與連接到任何其他數(shù)據(jù)庫(kù)非常相似。默認(rèn)主機(jī)是localhost,默認(rèn)端口為27017。>連接使用可選自定義端口和auth的遠(yuǎn)程主機(jī):
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 # echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list>
選擇數(shù)據(jù)庫(kù)
sudo apt-get update sudo apt-get install mongodb-10gen
>建立數(shù)據(jù)庫(kù)服務(wù)器連接後,我們將使用它來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。定義的方法是:
基礎(chǔ)知識(shí)(crud操作)
sudo service mongodb start sudo service mongodb stop
> MongoDB提供了豐富的語(yǔ)義,用於閱讀和操縱數(shù)據(jù)。 CRUD代表創(chuàng)建,閱讀,更新和刪除。這些術(shù)語(yǔ)是與數(shù)據(jù)庫(kù)所有交互的基礎(chǔ)。
>創(chuàng)建/選擇集合
選擇和創(chuàng)建集合與訪(fǎng)問(wèn)和創(chuàng)建數(shù)據(jù)庫(kù)非常相似。如果一個(gè)集合不存在,則將創(chuàng)建:
>
例如,這是在我的博客中創(chuàng)建“帖子”的集合:
sudo mongod --fork --logpath /var/log/mongodb/mongodb.log #or sudo mongod -f /etc/mongodb.conf創(chuàng)建文檔
在MongoDB中創(chuàng)建文檔並不容易。創(chuàng)建一個(gè)數(shù)組。將其傳遞到集合對(duì)像上的插入方法中
C:\> cd \mongodb\bin C:\mongodb\bin> mongod> insert()方法將數(shù)據(jù)存儲(chǔ)在集合中。 $ post Array自動(dòng)接收一個(gè)名為_(kāi)id的字段,該字段是插入的BSON文檔的自動(dòng)化唯一objectid。您還可以使用save()方法,該方法已升級(jí) - 更新現(xiàn)有記錄,或者如果不存在,則創(chuàng)建新記錄。
>
閱讀文檔要從集合中獲取數(shù)據(jù),我使用find()方法,該方法獲取集合中的所有數(shù)據(jù)。 FindOne()僅返回一個(gè)滿(mǎn)足指定查詢(xún)標(biāo)準(zhǔn)的文檔。以下示例將向您展示如何查詢(xún)一個(gè)或多個(gè)記錄。
net start MongoDB net stop MongoDB>
更新文檔
修改集合中的現(xiàn)有文檔或文檔。默認(rèn)情況下,update()方法更新一個(gè)文檔。如果將多選項(xiàng)設(shè)置為true,則該方法將更新與查詢(xún)條件匹配的所有文檔。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 # echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
update()方法採(cǎi)用兩個(gè)參數(shù)。第一個(gè)是描述要更新對(duì)象的標(biāo)準(zhǔn),第二個(gè)是更新匹配記錄的對(duì)象。還有第三個(gè)可選參數(shù),您可以在其中傳遞一系列選項(xiàng)。
>mini博客
我們將要構(gòu)建的項(xiàng)目的結(jié)構(gòu):
sudo apt-get update sudo apt-get install mongodb-10gen
在我們從實(shí)際的PHP代碼開(kāi)始之前,我們需要?jiǎng)?chuàng)建像上面的文件和文件夾。
config.php這是您的配置文件,它告訴我們的應(yīng)用如何連接到數(shù)據(jù)庫(kù)。這是您定義了用戶(hù)的數(shù)據(jù)庫(kù)名稱(chēng),用戶(hù)名和密碼以訪(fǎng)問(wèn)該數(shù)據(jù)庫(kù)的地方:
sudo service mongodb start sudo service mongodb stop我們?cè)谀难e定義paramaters userauth和passwordAuth以通過(guò)HTTP身份驗(yàn)證保護(hù)管理文件夾。我們?cè)诖颂幨褂肏TTP Auth,以簡(jiǎn)單起見(jiàn),因?yàn)楸疚牡闹行闹黝}是連接到MongoDB的 - 通常,您通常會(huì)使用ACL使用某種體面的框架來(lái)構(gòu)建訪(fǎng)問(wèn)控制。
> app.php:
admin
sudo mongod --fork --logpath /var/log/mongodb/mongodb.log #or sudo mongod -f /etc/mongodb.conf
這是包含CRUD代碼的文件夾。
>有關(guān)完整文件index.php的信息,請(qǐng)參見(jiàn)此處。在上面,我使用了類(lèi)Layout.php中的視圖函數(shù),該函數(shù)將自動(dòng)加載dashboard.view.php。
C:\> cd \mongodb\bin C:\mongodb\bin> mongod
GET參數(shù)狀態(tài)對(duì)應(yīng)於CRUD動(dòng)作。例如,當(dāng)狀態(tài)為“創(chuàng)建”時(shí):
net start MongoDB net stop MongoDB
>函數(shù)視圖('admin/create',$ data)顯示了一個(gè)HTML表單,用戶(hù)可以在其中編寫(xiě)新博客文章的標(biāo)題/內(nèi)容,或?qū)⒂脩?hù)刪除的數(shù)據(jù)保存到MongoDB。默認(rèn)情況下,腳本顯示以下html表單:
sudo pecl install mongo
sudo -i echo 'extension=mongo.so' >> /etc/php5/apache2/php.ini
接下來(lái),讓我們看一下db.php,可以在這裡完整找到>
php -i |grep "mongo" php --re mongoindex.php:模板文件可以在View文件夾中找到;例如index.view.php。這是index.php的示例:
>
$connection = new Mongo();>打開(kāi)瀏覽器並導(dǎo)航到http://duythien.dev/sitepoint/blog-mongodb。它列出了博客中的所有當(dāng)前文章:
$connecting_string = sprintf('mongodb://%s:%d/%s', $hosts, $port,$database), $connection= new Mongo($connecting_string,array('username'=>$username,'password'=>$password));
> single.php:當(dāng)您查看單個(gè)帖子頁(yè)面(單擊帖子上的更多信息)時(shí),您正在查看views文件夾中的single.view.php。這是single.php的邏輯:
中的function getByid()
>在評(píng)論部分下的輸入框中輸入任意名稱(chēng),並在文本框中放置一些文本。然後單擊“保存”按鈕,頁(yè)面將重新加載您剛剛發(fā)布的評(píng)論。這就是comment.php的樣子:
>sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 # echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list文章的評(píng)論存儲(chǔ)在文檔名稱(chēng)註釋的數(shù)組字段中。評(píng)論的每個(gè)元素都是包含多個(gè)字段的嵌入式文檔。
結(jié)論
在本文中,我們介紹了MongoDB對(duì)PHP的基本介紹。我們甚至在此過(guò)程中創(chuàng)建了一種非常原始的MVC(請(qǐng)參閱GitHub上的完整應(yīng)用)。您必須使用適當(dāng)?shù)目蚣埽诖颂幨褂玫暮?jiǎn)單HTTP AUTH之外實(shí)現(xiàn)身份驗(yàn)證,並添加更多功能,但是基礎(chǔ)知識(shí)已經(jīng)到位,您可以在此演示應(yīng)用程序中刪除此演示應(yīng)用程序的內(nèi)容。>
有關(guān)MongoDB的更多信息,請(qǐng)查看在線(xiàn)文檔。您喜歡這篇文章嗎?讓我們知道您的想法!>使用MongoDB和PHP
構(gòu)建一個(gè)簡(jiǎn)單的博客應(yīng)用程序的常見(jiàn)問(wèn)題(常見(jiàn)問(wèn)題解答)
什麼是mongodb,為什麼它用於構(gòu)建博客應(yīng)用程序?>
>使用MongoDB和PHP構(gòu)建博客應(yīng)用程序的先決條件是什麼? MongoDB和PHP,您需要對(duì)PHP和MongoDB有基本的了解。您還需要在系統(tǒng)上安裝PHP和MongoDB。此外,您還需要一個(gè)文本編輯器來(lái)編寫(xiě)代碼和一個(gè)Web服務(wù)器來(lái)託管您的應(yīng)用。 我如何在博客應(yīng)用程序中處理用戶(hù)身份驗(yàn)證?使用PHP中的會(huì)話(huà)來(lái)處理。當(dāng)用戶(hù)登錄時(shí),啟動(dòng)了會(huì)話(huà),並且用戶(hù)的信息存儲(chǔ)在會(huì)話(huà)變量中。這些變量可以在整個(gè)用戶(hù)的會(huì)話(huà)中訪(fǎng)問(wèn),從而使您可以根據(jù)用戶(hù)的身份驗(yàn)證狀態(tài)限制對(duì)某些頁(yè)面的訪(fǎng)問(wèn)。>>如何使用PHP和MongoDB在博客應(yīng)用中實(shí)現(xiàn)我的博客應(yīng)用中的CRUD操作? PHP提供了與MongoDB進(jìn)行交互的功能,使您可以創(chuàng)建文檔(帖子),讀取文檔,更新文檔和刪除文檔。 MongoDB php驅(qū)動(dòng)程序?yàn)檫@些操作提供了一個(gè)簡(jiǎn)單的API。
>
如何在博客應(yīng)用中處理錯(cuò)誤?
>在博客應(yīng)用程序中可以使用PHP的內(nèi)置錯(cuò)誤處理來(lái)完成錯(cuò)誤處理。功能。這些功能允許您定義自定義錯(cuò)誤處理規(guī)則,創(chuàng)建自定義錯(cuò)誤處理程序並報(bào)告錯(cuò)誤。您還可以為調(diào)試目的記錄錯(cuò)誤。>
如何改善博客應(yīng)用程序的性能? >可以通過(guò)使用索引,索引,,可以通過(guò)優(yōu)化您的mongoDB查詢(xún)來(lái)提高博客應(yīng)用程序的性能。和緩存數(shù)據(jù)。您還可以通過(guò)優(yōu)化您的PHP代碼來(lái)提高性能,例如使用有效的循環(huán)和功能,並最大程度地減少全局變量的使用。如何保護(hù)我的博客應(yīng)用程序?在博客應(yīng)用程序中,可以通過(guò)實(shí)現(xiàn)用戶(hù)身份驗(yàn)證,對(duì)用戶(hù)輸入進(jìn)行消毒以防止SQL注入攻擊以及使用安全連接(HTTPS)來(lái)實(shí)現(xiàn)。您還應(yīng)該使您的PHP和MongoDB安裝保持最新?tīng)顟B(tài),以從最新的安全補(bǔ)丁中受益。
>>我如何部署我的博客應(yīng)用程序?
可以通過(guò)在MongoDB數(shù)據(jù)庫(kù)中創(chuàng)建其他收藏來(lái)存儲(chǔ)評(píng)論和喜歡來(lái)添加到博客應(yīng)用程序中。然後,您可以使用PHP來(lái)創(chuàng)建,讀取,更新和刪除評(píng)論和喜歡,並將它們與特定帖子相關(guān)聯(lián)。
以上是使用MongoDB和PHP構(gòu)建一個(gè)簡(jiǎn)單的博客應(yīng)用的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

PHP變量作用域常見(jiàn)問(wèn)題及解決方法包括:1.函數(shù)內(nèi)部無(wú)法訪(fǎng)問(wèn)全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次並在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過(guò)濾;4.匿名函數(shù)需通過(guò)use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助於避免錯(cuò)誤並提升代碼穩(wěn)定性。

要安全處理PHP文件上傳需驗(yàn)證來(lái)源與類(lèi)型、控製文件名與路徑、設(shè)置服務(wù)器限制並二次處理媒體文件。 1.驗(yàn)證上傳來(lái)源通過(guò)token防止CSRF並通過(guò)finfo_file檢測(cè)真實(shí)MIME類(lèi)型使用白名單控制;2.重命名文件為隨機(jī)字符串並根據(jù)檢測(cè)類(lèi)型決定擴(kuò)展名存儲(chǔ)至非Web目錄;3.PHP配置限制上傳大小及臨時(shí)目錄Nginx/Apache禁止訪(fǎng)問(wèn)上傳目錄;4.GD庫(kù)重新保存圖片清除潛在惡意數(shù)據(jù)。

PHP註釋代碼常用方法有三種:1.單行註釋用//或#屏蔽一行代碼,推薦使用//;2.多行註釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧註釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時(shí)需注意閉合符號(hào)和避免嵌套。

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

寫(xiě)好PHP註釋的關(guān)鍵在於明確目的與規(guī)範(fàn),註釋?xiě)?yīng)解釋“為什麼”而非“做了什麼”,避免冗餘或過(guò)於簡(jiǎn)單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類(lèi)、方法說(shuō)明,提升可讀性與工具兼容性;2.強(qiáng)調(diào)邏輯背後的原因,如說(shuō)明為何需手動(dòng)輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說(shuō)明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項(xiàng)與問(wèn)題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護(hù)效率。

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

在PHP中獲取字符串特定索引字符可用方括號(hào)或花括號(hào),但推薦方括號(hào);索引從0開(kāi)始,超出範(fàn)圍訪(fǎng)問(wèn)返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實(shí)際應(yīng)用中循環(huán)訪(fǎng)問(wèn)前應(yīng)檢查字符串長(zhǎng)度,動(dòng)態(tài)字符串需驗(yàn)證有效性,多語(yǔ)言項(xiàng)目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

易於效率,啟動(dòng)啟動(dòng)tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)
