bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

php原生單例數據庫 php數據庫源碼

單例模式 數據庫 php 怎么用

搭建好php開發環境,這個就不多講了,能找單例模式的應該有一定的php基礎

成都創新互聯公司主要從事做網站、成都網站建設、網頁設計、企業做網站、公司建網站等業務。立足成都服務彌渡,10多年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:13518219792

2

新建一個database.php文件存放數據庫信息

?php

$db = array(

'host'='localhost',//地址

'user'='root',//數據庫用戶名

'password'='root',//數據庫密碼

'database'='ceshi',//數據庫名

)

?

3

新建Mysql.class.php編寫數據庫連接類操作類添加需要的屬性和構造方法

構造函數加載數據庫配置文件連接數據庫

?php

class db {

public $conn;

public static $sql;

public static $instance=null;

private function __construct(){

require_once('database.php');

$this-conn = mysqli_connect($db['host'],$db['user'],$db['password']);

if(!mysqli_select_db($this-conn,$db['database'])){

echo "失敗";

};

mysqli_query($this-conn,'set names utf8');

}

}

?這樣試試吧如果你對php這類有興趣的話,可以和我一樣在后盾人經常看看教材,自己多看幾遍,慢慢的以后就明白了,希望能幫到你,給個采納吧謝謝

php中連接數據庫,使用單例模式遇到的問題

當然是重新連接了,你是跳轉不是包含。

跳轉兩者之間共享值要專門的傳值操作,cookie\

session\

POST/GET

\靜態輸出

PHP基于單例模式實現的數據庫操作基類

本文實例講述了PHP基于單例模式實現的數據庫操作基類。分享給大家供大家參考,具體如下:

配置文件:

?php

$db

=

array(

'host'='localhost',

'user'='root',

'password'='',

'database'='test',

)

?

php

數據庫基類:

?php

class

db

{

public

$conn;

public

static

$sql;

public

static

$instance=null;

private

function

__construct(){

require_once('db.config.php');

$this-conn

=

mysql_connect($db['host'],$db['user'],$db['password']);

if(!mysql_select_db($db['database'],$this-conn)){

echo

"失敗";

};

mysql_query('set

names

utf8',$this-conn);

}

public

static

function

getInstance(){

if(is_null(self::$instance)){

self::$instance

=

new

db;

}

return

self::$instance;

}

/**

*

查詢數據庫

*/

public

function

select($table,$condition=array(),$field

=

array()){

$where='';

if(!empty($condition)){

foreach($condition

as

$k=$v){

$where.=$k."='".$v."'

and

";

}

$where='where

'.$where

.'1=1';

}

$fieldstr

=

'';

if(!empty($field)){

foreach($field

as

$k=$v){

$fieldstr.=

$v.',';

}

$fieldstr

=

rtrim($fieldstr,',');

}else{

$fieldstr

=

'*';

}

self::$sql

=

"select

{$fieldstr}

from

{$table}

{$where}";

$result=mysql_query(self::$sql,$this-conn);

$resuleRow

=

array();

$i

=

0;

while($row=mysql_fetch_assoc($result)){

foreach($row

as

$k=$v){

$resuleRow[$i][$k]

=

$v;

}

$i++;

}

return

$resuleRow;

}

/**

*

添加一條記錄

*/

public

function

insert($table,$data){

$values

=

'';

$datas

=

'';

foreach($data

as

$k=$v){

$values.=$k.',';

$datas.="'$v'".',';

}

$values

=

rtrim($values,',');

$datas

=

rtrim($datas,',');

self::$sql

=

"INSERT

INTO

{$table}

({$values})

VALUES

({$datas})";

if(mysql_query(self::$sql)){

return

mysql_insert_id();

}else{

return

false;

};

}

/**

*

修改一條記錄

*/

public

function

update($table,$data,$condition=array()){

$where='';

if(!empty($condition)){

foreach($condition

as

$k=$v){

$where.=$k."='".$v."'

and

";

}

$where='where

'.$where

.'1=1';

}

$updatastr

=

'';

if(!empty($data)){

foreach($data

as

$k=$v){

$updatastr.=

$k."='".$v."',";

}

$updatastr

=

'set

'.rtrim($updatastr,',');

}

self::$sql

=

"update

{$table}

{$updatastr}

{$where}";

return

mysql_query(self::$sql);

}

/**

*

刪除記錄

*/

public

function

delete($table,$condition){

$where='';

if(!empty($condition)){

foreach($condition

as

$k=$v){

$where.=$k."='".$v."'

and

";

}

$where='where

'.$where

.'1=1';

}

self::$sql

=

"delete

from

{$table}

{$where}";

return

mysql_query(self::$sql);

}

public

static

function

getLastSql(){

echo

self::$sql;

}

}

$db

=

db::getInstance();

//$list

=

$db-select('demo',array('name'='tom','password'='ds'),array('name','password'));

//echo

$db-insert('demo',array('name'='腳本之家','password'='123'));

//echo

$db-update('demo',array("name"='xxx',"password"='123'),array('id'=1));

echo

$db-delete('demo',array('id'='2'));

db::getLastSql();

echo

"pre";

?

更多關于PHP操作數據庫相關內容感興趣的讀者可查看本站專題:《php+mysql數據庫操作入門教程》、《PHP基于pdo操作數據庫技巧總結》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

怎樣試用PHP原生語句查詢數據庫

原生SQL查詢有 query() 和 execute() 兩個方法:

query():用于 SQL 查詢操作,并返回符合查詢條件的數據集

execute():更新和寫入數據的 SQL 操作,返回影響的記錄數

query()

query() 方法是用于 SQL 查詢操作,和select()方法一樣返回符合查詢條件的數據集。

例子:

public function read(){

// 實例化一個空模型,沒有對應任何數據表

$Dao = M();

//或者使用 $Dao = new Model();

$list = $Dao-query("select * from user where uid5");

if($list){

$this-assign('list', $list );

$this-display();

} else {

$this-error($Dao-getError());

}

}

對于 query() 方法返回的數據集,跟 select() 一樣,可以在模板里直接循環輸出。

execute()

execute() 方法用于更新和寫入數據的 SQL 操作(注:非查詢操作,無返回數據集),返回影響的記錄數。

例子:

public function read(){

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

// 實例化一個空模型,沒有對應任何數據表

$Dao = M();

//或者使用 $Dao = new Model();

$num = $Dao-execute("update user set email = '12345@xxx.com' where uid=3");

if($num){

echo '更新 ',$num,' 條記錄。';

}else{

echo '無記錄更新';

}

}

如果查詢比較復雜或一些特殊的數據操作不能通過 ThinkPHP 內置的 ORM 和 ActiveRecord 模式實現時,就可以通過直接使用原生 SQL 查詢來實現。

注意:以上都是 user 沒有表前綴的例子,在查詢語句中,查詢的表應該寫實際的表名字(包括前綴)。

PHP設計模式之單例模式

單例模式

:使得類的一個對象成為系統中的唯一實例.

PHP中使用單例模式最常見的就是數據庫操作了。避免在系統中有多個連接數據庫的操作,浪費系統資源的現象,就可以使用單例模式。每次對數據庫操作都使用一個實例。

簡單示例

class

AClass

{

//

用來存儲自己實例

public

static

$instance;

//

私有化構造函數,防止外界實例化對象

private

function

__construct()

{}

//

私有化克隆函數,防止外界克隆對象

private

function

__clone()

{}

//

靜態方法,單例訪問統一入口

public

static

function

getInstance()

{

if

(!(self::$instance

instanceof

self)){

self::$instance

=

new

self();

}

return

self::$instance;

}

//

test

public

function

test()

{

return

"done";

}

//

私有化克隆函數,防止外界克隆對象

private

function

__clone()

{}

}

class

BClass

extends

AClass{

}

//

獲取實例

$aclass

=

AClass::getInstance();

$bclass

=

BClass::getInstance();

//

調用方法

echo

$aclass-test();

對一些比較大型的應用來說,可能連接多個數據庫,那么不同的數據庫公用一個對象可能會產生問題,比如連接句柄的分配等,我們可以通過給$instance變成數組,通過不同的參數來控制

簡單示例

class

DB

{

//

用來存儲自己實例

public

static

$instance

=

array();

public

$conn;

//

私有化構造函數,防止外界實例化對象

private

function

__construct($host,

$username,

$password,

$dbname,

$port)

{

$this-conn

=

new

mysqli($host,

$username,

$password,

$dbname,

$port);

}

//

靜態方法,單例訪問統一入口

public

static

function

getInstance($host,

$username,

$password,

$dbname,

$port)

{

$key

=

$host.":".$port;

if

(!(self::$instance[$key]

instanceof

self)){

self::$instance[$key]

=

new

self($host,

$username,

$password,

$dbname,

$port);#實例化

}

return

self::$instance[$key];

}

//query

public

function

query($ql)

{

return

$this-conn-query($sql);

}

//

私有化克隆函數,防止外界克隆對象

private

function

__clone()

{}

//釋放資源

public

function

__destruct(){

$this-conn-close();

}

}

什么是PHP單例模式

PHP單例模式,就是一個對象只被生成一次,但該對象可以被其它眾多對象使用。單例模式使用最多的場景,是數據庫連接操作。我們知道,生成一個對象的操作是用new函數來實現,但是new對象都會消耗內存,而且有時候對同一個對象,在不同文件中可能會生成多次,這就造成了系統資源的浪費。然而使用單例模式,則可以很好的避免這種情況。

以數據庫為例,假設我們有一個數據庫的類,要實現數據庫連接。如果不使用單例模式,那么在很多PHP文件中,我們可能到要創建這樣的一個連接,這其實是對資源的很大浪費。那么下面介紹單例模式實現方法:

class?Database

{

//定義一個屬性,該屬性是靜態的保護或私有屬性

protected?static?$db;

//這里構造函數一定要是私有方法

private?function?__construct()

{??

}

//聲明一個獲取類實例的方法

static?function?getInstace()

{??

if(self::$db)?{

return?self::$db;

}else?{

//生成自己

self::$db?=?new?self();

return?self::$db;

}??

}

}

//錯誤調用方法

//用new實例化private標記構造函數的類會報錯

$db?=?new?Database();

//正確獲取實例方法

$db?=?Database::getInstace();

使用單例模式的好處是,當你在其他地方也要使用到這個類,比如上面的數據庫類。那么你可以在其它地方直接調用?Database::getInstace(),而且該實例只會被生成一次,不會被重復生成,所以不會浪費系統資源。

簡單的說,單例模式生成的實例只被生成一次,而且只負責一個特定的任務。

使用單例模式有下面幾個要求:

1.構造函數需要標記為private(訪問控制:防止外部代碼使用new操作符創建對象),單例類不能在其他類中實例化,只能被其自身實例化;

2.擁有一個保存類的實例的靜態成員變量;

3.擁有一個訪問這個實例的公共的靜態方法(常用getInstance()方法進行實例化單例類,通過instanceof操作符可以檢測到類是否已經被實例化);

4.如果嚴謹的話,還需要創建__clone()方法防止對象被復制(克?。?。(我上面沒創建)

使用單例模式好處,總結:

1、php的應用主要在于數據庫應用, 所以一個應用中會存在大量的數據庫操作, 使用單例模式, 則可以避免大量的new 操作消耗的資源。

2、如果系統中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便的實現. 這個可以參看ZF的FrontController部分。

3、在一次頁面請求中, 便于進行調試。

參考:

網站欄目:php原生單例數據庫 php數據庫源碼
路徑分享:http://vcdvsql.cn/article26/doodgjg.html

成都網站建設公司_創新互聯,為您提供動態網站、外貿建站網站建設、網頁設計公司電子商務網站收錄

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化