php數(shù)據(jù)庫(kù)對(duì)象實(shí)例操作 php數(shù)據(jù)庫(kù)寫(xiě)入實(shí)例

為什么要使用PHP單例模式及應(yīng)用實(shí)例

單例模式顧名思義,就是只有一個(gè)實(shí)例。作為對(duì)象的創(chuàng)建模式, 單例模式確保某一個(gè)類(lèi)只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例,這個(gè)類(lèi)我們稱(chēng)之為單例類(lèi)。單例模式的要點(diǎn)有三個(gè):一是某個(gè)類(lèi)只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。下面我們討論下為什么要使用PHP單例模式?多數(shù)人都是從單例模式的字面上的意思來(lái)理解它的用途, 認(rèn)為這是對(duì)系統(tǒng)資源的節(jié)省, 可以避免重復(fù)實(shí)例化, 是一種"計(jì)劃生育". 而PHP每次執(zhí)行完頁(yè)面都是會(huì)從內(nèi)存中清理掉所有的資源. 因而PHP中的單例實(shí)際每次運(yùn)行都是需要重新實(shí)例化的, 這樣就失去了單例重復(fù)實(shí)例化的意義了. 單單從這個(gè)方面來(lái)說(shuō), PHP的單例的確有點(diǎn)讓各位失望. 但是單例僅僅只有這個(gè)功能和應(yīng)用嗎? 答案是否定的,我們一起來(lái)看看。1. php的應(yīng)用主要在于數(shù)據(jù)庫(kù)應(yīng)用, 所以一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫(kù)操作, 在使用面向?qū)ο蟮姆绞介_(kāi)發(fā)時(shí)(廢話), 如果使用單例模式, 則可以避免大量的new 操作消耗的資源。2. 如果系統(tǒng)中需要有一個(gè)類(lèi)來(lái)全局控制某些配置信息, 那么使用單例模式可以很方便的實(shí)現(xiàn). 這個(gè)可以參看zend Framework的FrontController部分。3. 在一次頁(yè)面請(qǐng)求中, 便于進(jìn)行調(diào)試, 因?yàn)樗械拇a(例如數(shù)據(jù)庫(kù)操作類(lèi)db)都集中在一個(gè)類(lèi)中, 我們可以在類(lèi)中設(shè)置鉤子, 輸出日志,從而避免到處var_dump, echo。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為1000+客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為建甌企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)建甌網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

如何在Wordpress中自定義PHP頁(yè)面并操作數(shù)據(jù)庫(kù)

1. 嘗試設(shè)置一個(gè)頁(yè)面模板

1)拷貝一個(gè)index.php并改名為其它名,如list.php;

2)在list.php頁(yè)面最頂部添加

?php /*

Template Name: 友鏈

*/

?

以上兩步就可以創(chuàng)建一個(gè)頁(yè)面模板了,修改并保存好這個(gè)文件后,創(chuàng)建一個(gè)新頁(yè)面或者修改已存在的頁(yè)面。在右下邊有個(gè)“頁(yè)面模板”的面板,在下拉菜單中選中“友鏈”后保存就可以了。

然后在頁(yè)面中添加任何內(nèi)容,包括html代碼就可以顯示了??墒俏业男枨笫且约和瓿蒔HP代碼獲取數(shù)據(jù)并展示,它不能這么做。

2. 調(diào)用 WordPress 的 API實(shí)現(xiàn)URL正確跳轉(zhuǎn)

這種方法的自由度較高,并且可以創(chuàng)建非WordPress格式的URL。比如我們要把 轉(zhuǎn)交給主題文件夾下的 /custom/list.php 來(lái)處理,就可以用這種方式來(lái)處理。這種方法用到 template redirect 鉤子,template redirect 是 WordPress 在預(yù)處理好所有參數(shù)設(shè)置之后決定調(diào)用主題模板的時(shí)候調(diào)用的。

在functions.php模板函數(shù)文件中添加以下實(shí)例代碼:

function loadCustomTemplate($template) {

global $wp_query;

if(!file_exists($template))return;

$wp_query-is_page = true;

$wp_query-is_single = false;

$wp_query-is_home = false;

$wp_query-comments = false;

// if we have a 404 status

if ($wp_query-is_404) {

// set status of 404 to false

unset($wp_query-query["error"]);

$wp_query-query_vars["error"]="";

$wp_query-is_404=false;

}

// change the header to 200 OK

header("HTTP/1.1 200 OK");

//load our template

include($template);

exit;

}

function templateRedirect() {

$basename = basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);

loadCustomTemplate(TEMPLATEPATH.'/custom/'."/$basename.php");

}

add_action('template_redirect', 'templateRedirect');

這樣就實(shí)現(xiàn)了 WordPress 查找 /custom 文件夾下的 php 文件,并且將相匹配的 URL 請(qǐng)求轉(zhuǎn)交給對(duì)應(yīng)的 php 文件來(lái)處理的效果,與此同時(shí),這個(gè) php 文件還保持了對(duì) WordPress API 的調(diào)用,因此留給我們的空間非常大。

接下來(lái)就可以在 /custom 文件夾下自定義一個(gè)list.php文件然后通過(guò)鏈接訪問(wèn)。

3. 添加頁(yè)面內(nèi)容,獲取自定義數(shù)據(jù)庫(kù)/表中的內(nèi)容

然后就可以根據(jù)需要自己需要來(lái)實(shí)現(xiàn)自己想要的功能,這里需要有以下幾點(diǎn)要處理:

1)如何操作數(shù)據(jù)庫(kù)

WordPress提供了一個(gè)全局變量$wpdb,并將其實(shí)例化為wpdb類(lèi)的對(duì)象。這樣我們就可以直接使用$wpdb來(lái)調(diào)用所有的數(shù)據(jù)庫(kù)操作函數(shù)。通過(guò)這個(gè)$wpdb對(duì)象,我們可以對(duì)WordPress數(shù)據(jù)庫(kù)進(jìn)行任何操作,包括建表、查詢(xún)、刪除、更新等。使用$wpdb-get_results實(shí)現(xiàn)執(zhí)行sql語(yǔ)句操作數(shù)據(jù)庫(kù),并獲取結(jié)果。

global $wpdb;

$sql= "SELECT * FROM ".$wpdb-prefix.table;

$a = $wpdb-get_results($sql);

2)使用wordpress的樣式

通過(guò)F12查看首頁(yè)代碼就可以發(fā)現(xiàn)只要使用對(duì)應(yīng)的class樣式就能輕松讓頁(yè)面統(tǒng)一規(guī)整。那么就把對(duì)應(yīng)的html添加到自定義PHP頁(yè)面中即可。

3)利用wordpress的規(guī)則輕松實(shí)現(xiàn)翻頁(yè)

wordpress已經(jīng)默認(rèn)支持翻頁(yè),格式如:,只要在自定義的頁(yè)面里面定義好每頁(yè)返回正確的內(nèi)容就好啦。

4. 設(shè)置nginx rewrite規(guī)則

可讀性強(qiáng)的URL一定不能是這樣的格式,對(duì)爬蟲(chóng)也不友好,那就需要配置好rewrite規(guī)則,我使用的是nginx的配置為:

rewrite ^(.*)/indexed/page/([0-9]+)$ $1/indexed?page=$2 last;

到現(xiàn)在為止,離成功只有一步之遙了,那就是新建一個(gè)頁(yè)面, 大功告成!

php對(duì)于mysql數(shù)據(jù)庫(kù)的操作

$sql ="select * from db.pre order by num desc limit 0,10"

看了下 應(yīng)該是這個(gè)意思

獲取num字段中的值按從大到下 或是從小到大排列

是靠這句order by num desc 如果順序是反的 把desc 改成 asc

而想10條10條的去拿 就相當(dāng)于翻頁(yè)一樣

limit 0,10 這個(gè)地方 如果是簡(jiǎn)單的只拿10個(gè) 那么就是 limit 10

而你是要拿N個(gè)10條 就只有 limit 0,10

而0是什么呢

sql數(shù)據(jù)起始標(biāo)記是從0開(kāi)始的

所以0是表里數(shù)據(jù)序列的起始位

limit 10,10這個(gè)就是從數(shù)據(jù)的第11行取10個(gè)

php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比mysql數(shù)據(jù)庫(kù)的執(zhí)行效率完整示例

本文實(shí)例講述了php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比mysql數(shù)據(jù)庫(kù)的執(zhí)行效率。分享給大家供大家參考,具體如下:

?php

/**

*

測(cè)試pdo和mysqli的執(zhí)行效率

*/

header("Content-type:text/html;charset=utf-8");

//通過(guò)pdo鏈接數(shù)據(jù)庫(kù)

$pdo_startTime

=

microtime(true);

$pdo

=

new

PDO("mysql:host=localhost;dbname=test","root","1234",array(PDO::MYSQL_ATTR_INIT_COMMAND

=

"SET

NAMES'utf8';"));

for($i=1;$i=100;$i++){

$title

=

"pdo標(biāo)題".$i;

$content

=

"pdo內(nèi)容".$i;

$addtime

=

time();

$user_id

=

$i;

$pdo_sql

=

"INSERT

INTO

`article`(`title`,`content`,`addtime`,`user_id`)

VALUES(:title,:content,:addtime,:user_id)";

$sth

=

$pdo-prepare($pdo_sql);

$sth-bindParam(':title',$title);

$sth-bindParam(':content',$content);

$sth-bindParam(':addtime',$addtime);

$sth-bindParam(':user_id',$user_id);

$sth-execute();

}

$pdo_endTime

=

microtime(true);

$pdo_time

=

$pdo_endTime

-

$pdo_startTime;

echo

$pdo_time;

echo

"hr/";

//通過(guò)mysql鏈接數(shù)據(jù)庫(kù)

$mysqli_startTime

=

microtime(true);

$mysqli

=

mysqli_connect("localhost","root","1234","test")

or

die("數(shù)據(jù)連接失敗");

mysqli_query($mysqli,"set

names

utf8");

for($i=1;$i=100;$i++){

$title

=

"mysqli標(biāo)題".$i;

$content

=

"mysqli內(nèi)容".$i;

$addtime

=

time();

$user_id

=

$i;

$sql

=

"INSERT

INTO

`article`(`title`,`content`,`addtime`,`user_id`)

VALUES('".$title."','".$content."',".$addtime.",".$user_id.")";

mysqli_query($mysqli,$sql);

}

$mysqli_endTime

=

microtime(true);

$mysqli_time

=

$mysqli_endTime

-

$mysqli_startTime;

echo

$mysqli_time;

echo

"hr/";

if($pdo_time

$mysqli_time){

echo

"pdo的執(zhí)行時(shí)間是mysqli的".round($pdo_time/$mysqli_time)."倍";

}else{

echo

"mysqli的執(zhí)行時(shí)間是pdo的".round($mysqli_time/$pdo_time)."倍";

}

測(cè)試結(jié)果:其實(shí)經(jīng)過(guò)多次測(cè)試,pdo和mysqli的執(zhí)行效率差不多。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《php+mysqli數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比連接mysql數(shù)據(jù)庫(kù)的效率完整示例php中數(shù)據(jù)庫(kù)連接方式pdo和mysqli對(duì)比分析php中關(guān)于mysqli和mysql區(qū)別的一些知識(shí)點(diǎn)分析php操作mysqli(示例代碼)php封裝的mysqli類(lèi)完整實(shí)例PHP以mysqli方式連接類(lèi)完整代碼實(shí)例php簡(jiǎn)單解析mysqli查詢(xún)結(jié)果的方法(2種方法)php中mysql連接方式PDO使用詳解Php中用PDO查詢(xún)Mysql來(lái)避免SQL注入風(fēng)險(xiǎn)的方法php

mysql

PDO

查詢(xún)操作的實(shí)例詳解PHP實(shí)現(xiàn)PDO的mysql數(shù)據(jù)庫(kù)操作類(lèi)

,分別是什么意思?如:$this->db->getAll($sql);'>php類(lèi)的調(diào)用有兩個(gè)->,分別是什么意思?如:$this->db->getAll($sql);

-表示一個(gè)對(duì)象的成員(成員屬性 或 成員方法),符號(hào)前面說(shuō)明是什么對(duì)象?符號(hào)后面說(shuō)明是該對(duì)象的那一個(gè)成員?php中-符號(hào)沿用了c++中對(duì)象調(diào)用成員的方式,這里的$this其實(shí)是一個(gè)指針,指向了當(dāng)前類(lèi)的一個(gè)實(shí)例,所以也可以用-這里的db就是當(dāng)前類(lèi)的一個(gè)屬性也可以說(shuō)是$this的一個(gè)屬性。這個(gè)db屬性又是一個(gè)對(duì)象所以又可以用-調(diào)用getAll方法.

另外還有一個(gè)操作符?。海?你應(yīng)該見(jiàn)過(guò) - 符號(hào)是對(duì)象的成員,那 :: 就是類(lèi)的成員此符號(hào)名稱(chēng)為域操作符。但要注意的是不是所有類(lèi)成員都可以調(diào)用的,它要求調(diào)用的成員必須是公有且靜態(tài)的。。

本句的功能描述:

獲得當(dāng)前對(duì)象$this的db(db是一個(gè)數(shù)據(jù)庫(kù)操作類(lèi)的實(shí)例)通過(guò)調(diào)用這個(gè)操作類(lèi)的getALL方法來(lái)執(zhí)行$sql傳來(lái)的sql語(yǔ)句

分享名稱(chēng):php數(shù)據(jù)庫(kù)對(duì)象實(shí)例操作 php數(shù)據(jù)庫(kù)寫(xiě)入實(shí)例
當(dāng)前URL:http://muchs.cn/article8/dosccip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營(yíng)銷(xiāo)推廣、域名注冊(cè)、標(biāo)簽優(yōu)化定制網(wǎng)站、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名