php數據庫工具類,php數據庫工具類

本文目錄一覽:

誰給個php操作mysql類並有詳細使用說明或例子

下面這個,是針對php5的一個簡單數據庫封裝類,適合學習,其他的如刪除、更新等操作,你可以自己加上:

?php

class Mysql{ //首先定義一個類,首寫字母大寫

public $host;//服務器名,訪問修飾符PUBLIC證明$host是一個公共的屬情在類的內部外部都可訪問,可以被繼承

public $user;//用戶名,是公共的屬性

private $pass;//密碼,問修飾符private證明$pass是私有的.只能在類的內部使用且不能被繼承.

public $dbname;//數據庫名,也是公共的屬性.

//__construct聲名這是一個造函數,定義一些初始的信息.有三個參數

public function __construct($host,$user,$pass,$dbname){

$this-host = $host;

$this-user = $user;

$this-pass = $pass;

$this-dbname = $dbname;

$link = @mysql_connect($this-host,$this-user,$this-pass)

or die(“error”);

@mysql_select_db($this-dbname,$link)

or die(“error2”);

}

//定義數據庫的查尋和顯示函數

function myQuery($sql){

$result = mysql_query($sql);

if(!$result){

echo “error3”;

exit;

}

$num = mysql_num_rows($result);

if($num){

echo “NO”.$num;

}

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

echo ‘trtd bgcolor=”#fffddd”pre’.htmlspecialchars(stripslashes($row[‘body’])).”pre/td/tr”;

}

}

}

$rutt = new Mysql(‘localhost’,’root’,’ssss’,’calvin’);//實例化一個類…記住這裡的參數是和構造函數的參數一樣的…

$rutt-myQuery(‘select * from calvin_body’);//運行數據庫查尋並顯示的函數..

?

下面這個是針對php5以下版本的數據庫封裝類,體現了php類的繼承,一個許願版程序的:

?php

/*

* FileName: DatabaseSQL.inc.php

* Author: Terry

* Function: 建立DatabaseSQL對象,實現對數據庫的基本操作

* Version : Blue-System v2.0

* CreateDate: 2004-03-10

* Copyright: Blue-Workshop /

*/

// 定義DatabaseSQL對象

Class DatabaseSQL

{

var $CONN = “”; // 連接號

var $HOST = “Localhost”; // 主機名

var $USER = “”; // 用戶名

var $PASSWORD = “”; // 密碼

// DatabaseSQL類的構造函數

function DatabaseSQL($DBNAME)

{

$user = $this – USER;

$password = $this – PASSWORD;

$host = $this – HOST;

$db = $DBNAME;

// 連接數據庫

$conn = mysql_connect($host, $user, $password);

mysql_select_db($db, $conn);

$this – CONN = $conn;

return true;

}

// 定義查詢操作

function select($strSQL = “”)

{

if ( empty($strSQL) ) return false;

if ( empty($this – CONN) ) return false;

$conn = $this – CONN;

// 發送SQL語句,獲得結果

$result = mysql_query($strSQL, $conn);

if ( (!$result) or (empty($result)) ) {

return false;

}

$num = 0;

$data = array();

// 將查詢結果放二維數組中

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

$data[$num] = $row;

$num++;

}

mysql_free_result($result);

return $data;

}

// 定義插入操作

function insert($strSQL = “”)

{

if ( empty($strSQL) ) return false;

if ( empty($this – CONN) ) return false;

$conn = $this – CONN;

// 發送SQL語句,插入新數據

$result = mysql_query($strSQL, $conn);

if ( !result ) return false;

// 獲得記錄的id號

$result = mysql_insert_id();

return $result;

}

// 定義更新操作

function update($strSQL = “”)

{

if ( empty($strSQL) ) return false;

if ( empty($this – CONN) ) return false;

$conn = $this – CONN;

// 發送SQL語句,更新數據庫

$result = mysql_query($strSQL, $conn);

return $result;

}

// 定義刪除操作

function delete($strSQL = “”)

{

if ( empty($strSQL) ) return false;

if ( empty($this – CONN) ) return false;

$conn = $this – CONN;

// 發送SQL語句,刪除記錄

$result = mysql_query($strSQL, $conn);

return $result;

}

}

?

———————————-

?php

/*

* FileName: Wish.inc.php

* Author: Terry

* Function: 建立Wish對象,實現對許願板進行操作功能

* Version : Blue-System v2.0

* CreateDate: 2004-03-10

* Copyright: Blue-Workshop /

*/

require “config.inc.php”;

require “DatabaseSQL.inc.php”;

// 定義Wish對象

Class Wish extends DatabaseSQL

{

// 構造函數

function Wish()

{

$DBName = $GLOBALS[“dbname”];

$this – DatabaseSQL($DBName);

}

// 添加新願望(use in wish/save.php?action=add_wish)

function AddWish($name,$receiver,$type,$address,$content,$hide,$addtime)

{

$strSQL = “insert into Wish (Name, Receiver, Type, Address, Content, Hide, AddTime) values (‘$name’, ‘$receiver’, ‘$type’, ‘$address’, ‘$content’, ‘$hide’, ‘$addtime’)”;

$result = $this – insert($strSQL);

return $result;

}

// 修改指定id的願望內容(use in save.php?action=edit_wish)

function EditWish($wid,$name,$receiver,$type,$address,$content,$hide)

{

$strSQL = “update `Wish` set `Name` = ‘$name’, `Receiver` = ‘$receiver’, `Type` = ‘$type’, `Address` = ‘$address’, `Content` = ‘$content’, `Hide` = ‘$hide’ where `WID` = ‘$wid’ “;

$result = $this – update($strSQL);

return $result;

}

// 願望列表(use in index.php)

function ListWish($startid,$list_nums)

{

$strSQL = “select * from Wish order by AddTime desc LIMIT $startid,$list_nums”;

$result = $this – select($strSQL);

return $result;

}

// 獲取指定願望信息(use in index.php?go=view_wish)

function GetWish($wid)

{

$strSQL = “select * from Wish where WID = ‘$wid'”;

$result = $this – select($strSQL);

return $result;

}

// 更新指定願望的瀏覽數(use in index.php?go=view_wish)

function UpdateHit($wid)

{

$strSQL = “update `Wish` set `Hit` = ( `Hit` + 1 ) where `WID` = ‘$wid'”;

$result = $this – update($strSQL);

return $result;

}

// 刪除指定願望信息(use in save.php?action=del_wish)

function DelWish($wid)

{

$strSQL = “delete from Wish where WID = ‘$wid'”;

$result = $this – delete($strSQL);

return $result;

}

}

?

—————————————

?php

/*

* FileName: config.inc.php

* Author: Terry

* Function: 系統基本設置

* Version : B.S – Wish v1.0

* CreateDate: 2004-03-19

* Copyright: Blue-Workshop

* Tec-Support: /

* Attention: 請保留版權信息,謝謝 ^_^

*/

// 數據庫信息

$dbhost = “Localhost”; /* 主機名 */

$dbuser = “”; /* 數據庫用戶 */

$dbpwd = “”; /* 數據庫密碼 */

$dbname = “BS_Wish”; /* 數據庫名 */

// 管理員信息

$adminname = “blue”; /* 初始化管理員 */

$adminpwd = “blue”; /* 初始化管理密碼 */

?

PHP訪問MYSQL數據庫封裝類(附函數說明)

複製代碼

代碼如下:

?php

/*

MYSQL

數據庫訪問封裝類

MYSQL

數據訪問方式,php4支持以mysql_開頭的過程訪問方式,php5開始支持以mysqli_開頭的過程和mysqli面向對象

訪問方式,本封裝類以mysql_封裝

數據訪問的一般流程:

1,連接數據庫

mysql_connect

or

mysql_pconnect

2,選擇數據庫

mysql_select_db

3,執行SQL查詢

mysql_query

4,處理返回的數據

mysql_fetch_array

mysql_num_rows

mysql_fetch_assoc

mysql_fetch_row

etc

*/

class

db_mysql

{

var

$querynum

=

;

//當前頁面進程查詢數據庫的次數

var

$dblink

;

//數據庫連接資源

//鏈接數據庫

function

connect($dbhost,$dbuser,$dbpw,$dbname=”,$dbcharset=’utf-8′,$pconnect=0

,

$halt=true)

{

$func

=

empty($pconnect)

?

‘mysql_connect’

:

‘mysql_pconnect’

;

$this-dblink

=

@$func($dbhost,$dbuser,$dbpw)

;

if

($halt

!$this-dblink)

{

$this-halt(“無法鏈接數據庫!”);

}

//設置查詢字符集

mysql_query(“SET

character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary”,$this-dblink)

;

//選擇數據庫

$dbname

@mysql_select_db($dbname,$this-dblink)

;

}

//選擇數據庫

function

select_db($dbname)

{

return

mysql_select_db($dbname,$this-dblink);

}

//執行SQL查詢

function

query($sql)

{

$this-querynum++

;

return

mysql_query($sql,$this-dblink)

;

}

//返回最近一次與連接句柄關聯的INSERT,UPDATE

或DELETE

查詢所影響的記錄行數

function

affected_rows()

{

return

mysql_affected_rows($this-dblink)

;

}

//取得結果集中行的數目,只對select查詢的結果集有效

function

num_rows($result)

{

return

mysql_num_rows($result)

;

}

//獲得單格的查詢結果

function

result($result,$row=0)

{

return

mysql_result($result,$row)

;

}

//取得上一步

INSERT

操作產生的

ID,只對錶有AUTO_INCREMENT

ID的操作有效

function

insert_id()

{

return

($id

=

mysql_insert_id($this-dblink))

=

?

$id

:

$this-result($this-query(“SELECT

last_insert_id()”),

0);

}

//從結果集提取當前行,以數字為key表示的關聯數組形式返回

function

fetch_row($result)

{

return

mysql_fetch_row($result)

;

}

//從結果集提取當前行,以字段名為key表示的關聯數組形式返回

function

fetch_assoc($result)

{

return

mysql_fetch_assoc($result);

}

//從結果集提取當前行,以字段名和數字為key表示的關聯數組形式返回

function

fetch_array($result)

{

return

mysql_fetch_array($result);

}

//關閉鏈接

function

close()

{

return

mysql_close($this-dblink)

;

}

//輸出簡單的錯誤html提示信息並終止程序

function

halt($msg)

{

$message

=

“html\nhead\n”

;

$message

.=

“meta

content=’text/html;charset=gb2312’\n”

;

$message

.=

“/head\n”

;

$message

.=

“body\n”

;

$message

.=

“數據庫出錯:”.htmlspecialchars($msg).”\n”

;

$message

.=

“/body\n”

;

$message

.=

“/html”

;

echo

$message

;

exit

;

}

}

?

PHP網站怎麼連接到數據庫?

常規方式

常規方式就是按部就班的讀取文件了。其餘的話和上述方案一致。

// 讀取配置文件內容

$handle = fopen(“filepath”, “r”);            $content = fread($handle, filesize(“filepath”));123

PHP解析XML

上述兩種讀取文件,其實都是為了PHP解析XML來做準備的。關於PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是對於比較小型的xml配置文件,simplexml就足夠了。

配置文件

?xml version=”1.0″ encoding=”UTF-8″ ?mysql

!– 為防止出現意外,請按照此標準順序書寫.其實也無所謂了 —

hostlocalhost/host

userroot/user

password123456/password

dbtest/db

port3306/port/mysql12345678910

解析

?php/**

* 作為解析XML配置文件必備工具

*/class XMLUtil {

public static $dbconfigpath = “./db.config.xml”;    public static function getDBConfiguration() {

$dbconfig = array ();        try {            // 讀取配置文件內容

$handle = fopen(self::$dbconfigpath, “r”);            $content = fread($handle, filesize(self::$dbconfigpath));            // 獲取xml文檔根節點,進而獲取相關的數據庫信息

$mysql = simplexml_load_string($content);            // 將獲取到的xml節點信息賦值給關聯數組,方便接下來的方法調用

$dbconfig[‘host’] = $mysql-host;            $dbconfig[‘user’] = $mysql-user;            $dbconfig[‘password’] = $mysql-password;            $dbconfig[‘db’] = $mysql-db;            $dbconfig[‘port’] = $mysql-port;            // 將配置信息以關聯數組的形式返回

return $dbconfig;

} catch ( Exception $e ) {            throw new RuntimeException ( “mark讀取數據庫配置文件信息出錯!/markbr /” );

}        return $dbconfig;

}

}1234567891011121314151617181920212223242526272829

數據庫連接池

對於PHP程序而言,優化永無止境。而數據庫連接池就在一定程度上起到了優化的作用。其使得對用戶的每一個請求而言,無需每次都像數據庫申請鏈接資源。而是通過已存在的數據庫連接池中的鏈接來返回,從時間上,效率上,都是一個大大的提升。

於是,這裡簡單的模擬了一下數據庫連接池的實現。核心在於維護一個「池」。

從池子中取,用畢,歸還給池子。

?php/**x

*  PHP中的數據庫 工具類設計

*  郭璞

*  2016年12月23日

*

**/class DbHelper {    private $dbconfig;    private $dbpool;    public $poolsize;    public function __construct($poolsize = 20) {        if (! file_exists ( “./utils.php” )) {            throw new RuntimeException ( “markutils.php文件丟失,無法進行配置文件的初始化操作!/markbr /” );

}else {

require ‘./utils.php’;

}        // 初始化 配置文件信息

$this-dbconfig = XMLUtil::getDBConfiguration ();        // 準備好數據庫連接池「偽隊列」

$this-poolsize = $poolsize;

$this-dbpool = array ();        for($index = 1; $index = $this-poolsize; $index ++) {

$conn = mysqli_connect ( $this-dbconfig [‘host’], $this-dbconfig [‘user’], $this-dbconfig [‘password’], $this-dbconfig [‘db’] ) or die ( “mark連接數據庫失敗!/markbr /” );

array_push ( $this-dbpool, $conn );

}

}    /**

* 從數據庫連接池中獲取一個數據庫鏈接資源

*

* @throws ErrorException

* @return mixed

*/

public function getConn() {        if (count ( $this-dbpool ) = 0) {            throw new ErrorException ( “mark數據庫連接池中已無鏈接資源,請稍後重試!/mark” );

} else {            return array_pop ( $this-dbpool );

}

}    /**

* 將用完的數據庫鏈接資源放回到數據庫連接池

*

* @param unknown $conn

* @throws ErrorException

*/

public function release($conn) {        if (count ( $this-dbpool ) = $this-poolsize) {            throw new ErrorException ( “mark數據庫連接池已滿/markbr /” );

} else {

array_push ( $this-dbpool, $conn );

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/300834.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 14:18
下一篇 2024-12-29 14:18

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28

發表回復

登錄後才能評論