本文目錄一覽:
誰給個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