本文目錄一覽:
- 1、php封裝好的mysql操作庫嗎
- 2、PHP訪問MYSQL資料庫封裝類(附函數說明)
- 3、php封裝一個class類實現mysql改的方法
- 4、php實現mysql封裝類示例
- 5、PHP里封裝的一個mysql insert函數,還有一個update函數
php封裝好的mysql操作庫嗎
php封裝好的mysql操作庫
類文件mysql.class.php:
?php
class Mysql{
//資料庫連接返回值
private $conn;
/**
* [構造函數,返回值給$conn]
* @param [string] $hostname [主機名]
* @param [string] $username[用戶名]
* @param [string] $password[密碼]
* @param [string] $dbname[資料庫名]
* @param [string] $charset[字符集]
* @return [null]
*/
function __construct($hostname,$username,$password,$dbname,$charset=’utf8′){
$config = @mysql_connect($hostname,$username,$password);
if(!$config){
echo ‘連接失敗,請聯繫管理員’;
exit;
}
$this-conn = $config;
$res = mysql_select_db($dbname);
if(!$res){
echo ‘連接失敗,請聯繫管理員’;
exit;
}
mysql_set_charset($charset);
}
function __destruct(){
mysql_close();
}
/**
* [getAll 獲取所有信息]
* @param [string] $sql [sql語句]
* @return [array] [返回二維數組]
*/
function getAll($sql){
$result = mysql_query($sql,$this-conn);
$data = array();
if($result mysql_num_rows($result)0){
while($row = mysql_fetch_assoc($result)){
$data[] = $row;
}
}
return $data;
}
/**
* [getOne 獲取單條數據]
* @param [string] $sql [sql語句]
* @return [array] [返回一維數組]
*/
function getOne($sql){
$result = mysql_query($sql,$this-conn);
$data = array();
if($result mysql_num_rows($result)0){
$data = mysql_fetch_assoc($result);
}
return $data;
}
/**
* [getOne 獲取單條數據]
* @param [string] $table [表名]
* @param [string] $data [由欄位名當鍵,屬性當鍵值的一維數組]
* @return [type] [返回false或者插入數據的id]
*/
function insert($table,$data){
$str = ”;
$str .=”INSERT INTO `$table` “;
$str .=”(`”.implode(“`,`”,array_keys($data)).”`) “;
$str .=” VALUES “;
$str .= “(‘”.implode(“‘,'”,$data).”‘)”;
$res = mysql_query($str,$this-conn);
if($res mysql_affected_rows()0){
return mysql_insert_id();
}else{
return false;
}
}
/**
* [update 更新資料庫]
* @param [string] $table [表名]
* @param [array] $data [更新的數據,由欄位名當鍵,屬性當鍵值的一維數組]
* @param [string] $where [條件,『欄位名』=『欄位屬性』]
* @return [type] [更新成功返回影響的行數,更新失敗返回false]
*/
function update($table,$data,$where){
$sql = ‘UPDATE ‘.$table.’ SET ‘;
foreach($data as $key = $value){
$sql .= “`{$key}`='{$value}’,”;
}
$sql = rtrim($sql,’,’);
$sql .= ” WHERE $where”;
$res = mysql_query($sql,$this-conn);
if($res mysql_affected_rows()){
return mysql_affected_rows();
}else{
return false;
}
}
/**
* [delete 刪除數據]
* @param [string] $table [表名]
* @param [string] $where [條件,『欄位名』=『欄位屬性』]
* @return [type] [成功返回影響的行數,失敗返回false]
*/
function del($table,$where){
$sql = “DELETE FROM `{$table}` WHERE {$where}”;
$res = mysql_query($sql,$this-conn);
if($res mysql_affected_rows()){
return mysql_affected_rows();
}else{
return false;
}
}
}
?
使用案例:
?php
//包含資料庫操作類文件
include ‘mysql.class.php’;
//設置傳入參數
$hostname=’localhost’;
$username=’root’;
$password=’123456′;
$dbname=’aisi’;
$charset = ‘utf8’;
//實例化對象
$db = new Mysql($hostname,$username,$password,$dbname);
//獲取一條數據
$sql = “SELECT count(as_article_id) as count FROM as_article where as_article_type_id=1”;
$count = $db-getOne($sql);
//獲取多條數據
$sql = “SELECT * FROM as_article where as_article_type_id=1 order by as_article_addtime desc limit $start,$limit”;
$service = $db-getAll($sql);
//插入數據
$arr = array(
‘as_article_title’=’資料庫操作類’,
‘as_article_author’=’rex’,
);
$res = $db-insert(‘as_article’,$arr);
//更新數據
$arr = array(
‘as_article_title’=’實例化對象’,
‘as_article_author’=’Lee’,
);
$where = “as_article_id=1”;
$res = $db-update(‘as_article’,$arr,$where);
//刪除數據
$where = “as_article_id=1”;
$res = $db-del(‘as_article’,$where);
?
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封裝一個class類實現mysql改的方法
/**
* 執行更新記錄操作
* @param $data 要更新的數據內容,參數可以為數組也可以為字元串,建議數組。
* 為數組時數組key為欄位值,數組值為數據取值
* 為字元串時[例:`name`=’phpcms’,`hits`=`hits`+1]。
* 為數組時[例: array(‘name’=’phpcms’,’password’=’123456′)]
* 數組可使用array(‘name’=’+=1’, ‘base’=’-=1′);程序會自動解析為`name` = `name` + 1, `base` = `base` – 1
* @param $table 數據表
* @param $where 更新數據時的條件
* @return boolean
*/
public function update($data, $table, $where = ”) {
if($table == ” or $where == ”) {
return false;
}
$where = ‘ WHERE ‘.$where;
$field = ”;
if(is_string($data) $data != ”) {
$field = $data;
} elseif (is_array($data) count($data) 0) {
$fields = array();
foreach($data as $k=$v) {
switch (substr($v, 0, 2)) {
case ‘+=’:
$v = substr($v,2);
if (is_numeric($v)) {
$fields[] = $this-add_special_char($k).’=’.$this-add_special_char($k).’+’.$this-escape_string($v, ”, false);
} else {
continue;
}
break;
case ‘-=’:
$v = substr($v,2);
if (is_numeric($v)) {
$fields[] = $this-add_special_char($k).’=’.$this-add_special_char($k).’-‘.$this-escape_string($v, ”, false);
} else {
continue;
}
break;
default:
$fields[] = $this-add_special_char($k).’=’.$this-escape_string($v);
}
}
$field = implode(‘,’, $fields);
} else {
return false;
}
$sql = ‘UPDATE `’.$this-config[‘database’].’`.`’.$table.’` SET ‘.$field.$where;
return $this-execute($sql);
}
/**
* 資料庫查詢執行方法
* @param $sql 要執行的sql語句
* @return 查詢資源句柄
*/
private function execute($sql) {
if(!is_resource($this-link)) {
$this-connect();
}
$this-lastqueryid = mysql_query($sql, $this-link) or $this-halt(mysql_error(), $sql);
$this-querycount++;
return $this-lastqueryid;
}
php實現mysql封裝類示例
php封裝mysql類
複製代碼
代碼如下:
?php
class
Mysql
{
private
$host;
private
$user;
private
$pwd;
private
$dbName;
private
$charset;
private
$conn
=
null;
public
function
__construct()
{
$this-host
=
‘localhost’;
$this-user
=
‘root’;
$this-pwd
=
‘root’;
$this-dbName
=
‘test’;
$this-connect($this-host,$this-user,$this-pwd);
$this-switchDb($this-dbName);
$this-setChar($this-charset);
}
//負責鏈接
private
function
connect($h,$u,$p)
{
$conn
=
mysql_connect($h,$u,$p);
$this-conn
=
$conn;
}
//負責切換資料庫
public
function
switchDb($db)
{
$sql
=
‘use’
.
$db;
$this-query($sql);
}
//負責設置字符集
public
function
setChar($char)
{
$sql
=
‘set
names’
.
$char;
$this-query($sql);
}
//負責發送sql查詢
public
function
query($sql)
{
return
mysql_query($sql,$this-conn);
}
//負責獲取多行多列的select結果
public
function
getAll($sql)
{
$list
=
array();
$rs
=
$this-query($sql);
if
(!$rs)
{
return
false;
}
while
($row
=
mysql_fetch_assoc($rs))
{
$list[]
=
$row;
}
return
$list;
}
public
function
getRow($sql)
{
$rs
=
$this-query($sql);
if(!$rs)
{
return
false;
}
return
mysql_fetch_assoc($rs);
}
public
function
getOne($sql)
{
$rs
=
$this-query($sql);
if
(!$rs)
{
return
false;
}
return
mysql_fetch_assoc($rs);
return
$row[0];
}
public
function
close()
{
mysql_close($this-conn);
}
}
echo
‘pre’;
$mysql
=
new
Mysql();
print_r($mysql);
$sql
=
“insert
into
stu
values
(4,’wangwu’,’99998′)”;
if($mysql-query($sql)){
echo
“query成功”;
}else
{
echo
“失敗”;
}
echo
“br
/”;
$sql
=
“select
*
from
stu”;
$arr
=
$mysql-getAll($sql);
print_r($arr);
?
PHP里封裝的一個mysql insert函數,還有一個update函數
談一下個人的幾點認識,供參考:
封裝,百度百科的解釋:即隱藏對象的屬性和實現細節,僅對外公開介面,控制在程序中屬性的讀和修改的訪問級別;將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成「類」,其中數據和函數都是類的成員。
簡單點說,封裝就是將某塊功能抽取出來,寫到一個函數里,供重複調用。封裝,通常是指類函數、類的成員。
就你上面的代碼,就個人理解,你完全可以將之理解為功能函數,這也算是一種「封裝」(但貌似與面向對象思想里的類的封裝有些區別)。
update 函數,其功能是對資料庫CURD四種基本操作里 U 的實現,其原理是通過對傳入的數組(據判斷,貌似是用「欄位名」為鍵名,修改的值為 Value),通過對數組遍歷,進行組合,進一步得到 SQL 語句(update),並予以執行。
$str.=$sep.$key.”='”.$val.”‘”;
$sep 是不同資料庫欄位名之間的分隔符,$key 是資料庫欄位名,$val 是修改的值。上面的代碼通過多次循環之後,就會形成合乎 SQL 語法的 Update 數據修改語句,例如:
update table1 set LastDate=’ddd’,SssName=’ddd’ where UserID=”aasdd”
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152120.html