類文件mysql.class.php:
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、霞浦網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為霞浦等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
?php
class?Mysql{
//數(shù)據(jù)庫連接返回值
private?$conn;
/**
*?[構(gòu)造函數(shù),返回值給$conn]
*?@param?[string]?$hostname?[主機(jī)名]
*?@param?[string]?$username[用戶名]
*?@param?[string]?$password[密碼]
*?@param?[string]?$dbname[數(shù)據(jù)庫名]
*?@param?[string]?$charset[字符集]
*?@return?[null]
*/
function?__construct($hostname,$username,$password,$dbname,$charset='utf8'){
$config?=?@mysql_connect($hostname,$username,$password);
if(!$config){
echo?'連接失敗,請(qǐng)聯(lián)系管理員';
exit;
}
$this-conn?=?$config;
$res?=?mysql_select_db($dbname);
if(!$res){
echo?'連接失敗,請(qǐng)聯(lián)系管理員';
exit;
}
mysql_set_charset($charset);
}
function?__destruct(){
mysql_close();
}
/**
*?[getAll?獲取所有信息]
*?@param?[string]?$sql?[sql語句]
*?@return?[array]?[返回二維數(shù)組]
*/
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?獲取單條數(shù)據(jù)]
*?@param?[string]?$sql?[sql語句]
*?@return?[array]?[返回一維數(shù)組]
*/
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?獲取單條數(shù)據(jù)]
*?@param?[string]?$table?[表名]
*?@param?[string]?$data?[由字段名當(dāng)鍵,屬性當(dāng)鍵值的一維數(shù)組]
*?@return?[type]?[返回false或者插入數(shù)據(jù)的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?更新數(shù)據(jù)庫]
*?@param?[string]?$table?[表名]
*?@param?[array]?$data?[更新的數(shù)據(jù),由字段名當(dāng)鍵,屬性當(dāng)鍵值的一維數(shù)組]
*?@param?[string]?$where?[條件,‘字段名’=‘字段屬性’]
*?@return?[type]?[更新成功返回影響的行數(shù),更新失敗返回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?刪除數(shù)據(jù)]
*?@param?[string]?$table?[表名]
*?@param?[string]?$where?[條件,‘字段名’=‘字段屬性’]
*?@return?[type]?[成功返回影響的行數(shù),失敗返回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
//包含數(shù)據(jù)庫操作類文件
include?'mysql.class.php';
//設(shè)置傳入?yún)?shù)
$hostname='localhost';
$username='root';
$password='123456';
$dbname='aisi';
$charset?=?'utf8';
//實(shí)例化對(duì)象
$db?=?new?Mysql($hostname,$username,$password,$dbname);
//獲取一條數(shù)據(jù)
$sql?=?"SELECT?count(as_article_id)?as?count?FROM?as_article?where?as_article_type_id=1";
$count?=?$db-getOne($sql);
//獲取多條數(shù)據(jù)
$sql?=?"SELECT?*?FROM?as_article?where?as_article_type_id=1?order?by?as_article_addtime?desc?limit?$start,$limit";
$service?=?$db-getAll($sql);
//插入數(shù)據(jù)
$arr?=?array(
'as_article_title'='數(shù)據(jù)庫操作類',
'as_article_author'='rex',
);
$res?=?$db-insert('as_article',$arr);
//更新數(shù)據(jù)
$arr?=?array(
'as_article_title'='實(shí)例化對(duì)象',
'as_article_author'='Lee',
);
$where?=?"as_article_id=1";
$res?=?$db-update('as_article',$arr,$where);
//刪除數(shù)據(jù)
$where?=?"as_article_id=1";
$res?=?$db-del('as_article',$where);
?
復(fù)制代碼
代碼如下:
?php
/*
MYSQL
數(shù)據(jù)庫訪問封裝類
MYSQL
數(shù)據(jù)訪問方式,php4支持以mysql_開頭的過程訪問方式,php5開始支持以mysqli_開頭的過程和mysqli面向?qū)ο?/p>
訪問方式,本封裝類以mysql_封裝
數(shù)據(jù)訪問的一般流程:
1,連接數(shù)據(jù)庫
mysql_connect
or
mysql_pconnect
2,選擇數(shù)據(jù)庫
mysql_select_db
3,執(zhí)行SQL查詢
mysql_query
4,處理返回的數(shù)據(jù)
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
;
//當(dāng)前頁面進(jìn)程查詢數(shù)據(jù)庫的次數(shù)
var
$dblink
;
//數(shù)據(jù)庫連接資源
//鏈接數(shù)據(jù)庫
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("無法鏈接數(shù)據(jù)庫!");
}
//設(shè)置查詢字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this-dblink)
;
//選擇數(shù)據(jù)庫
$dbname
@mysql_select_db($dbname,$this-dblink)
;
}
//選擇數(shù)據(jù)庫
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this-dblink);
}
//執(zhí)行SQL查詢
function
query($sql)
{
$this-querynum++
;
return
mysql_query($sql,$this-dblink)
;
}
//返回最近一次與連接句柄關(guān)聯(lián)的INSERT,UPDATE
或DELETE
查詢所影響的記錄行數(shù)
function
affected_rows()
{
return
mysql_affected_rows($this-dblink)
;
}
//取得結(jié)果集中行的數(shù)目,只對(duì)select查詢的結(jié)果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//獲得單格的查詢結(jié)果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作產(chǎn)生的
ID,只對(duì)表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this-dblink))
=
?
$id
:
$this-result($this-query("SELECT
last_insert_id()"),
0);
}
//從結(jié)果集提取當(dāng)前行,以數(shù)字為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//從結(jié)果集提取當(dāng)前行,以字段名為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//從結(jié)果集提取當(dāng)前行,以字段名和數(shù)字為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//關(guān)閉鏈接
function
close()
{
return
mysql_close($this-dblink)
;
}
//輸出簡單的錯(cuò)誤html提示信息并終止程序
function
halt($msg)
{
$message
=
"html\nhead\n"
;
$message
.=
"meta
content='text/html;charset=gb2312'\n"
;
$message
.=
"/head\n"
;
$message
.=
"body\n"
;
$message
.=
"數(shù)據(jù)庫出錯(cuò):".htmlspecialchars($msg)."\n"
;
$message
.=
"/body\n"
;
$message
.=
"/html"
;
echo
$message
;
exit
;
}
}
?
thinkphp連接數(shù)據(jù)庫的方法:
ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫訪問層,把不同的數(shù)據(jù)庫操作封裝起來,只需要使用公共的Db類進(jìn)行操作,而無需針對(duì)不同的數(shù)據(jù)庫寫不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)來處理。目前的數(shù)據(jù)庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對(duì)PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫,必須配置數(shù)據(jù)庫連接信息,數(shù)據(jù)庫的配置文件有多種定義方式。
常用的配置方式是在項(xiàng)目配置文件中添加下面的參數(shù):
?php
//項(xiàng)目配置文件
return array(
//數(shù)據(jù)庫配置信息
'DB_TYPE' = 'mysql', // 數(shù)據(jù)庫類型
'DB_HOST' = 'localhost', // 服務(wù)器地址
'DB_NAME' = 'thinkphp', // 數(shù)據(jù)庫名
'DB_USER' = 'root', // 用戶名
'DB_PWD' = '', // 密碼
'DB_PORT' = 3306, // 端口
'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫表前綴
//其他項(xiàng)目配置參數(shù)
// ...
);
需要注意的是,ThinkPHP的數(shù)據(jù)庫連接的惰性的,所以并不是在實(shí)例化的時(shí)候就連接數(shù)據(jù)庫,而是在有實(shí)際的數(shù)據(jù)操作的時(shí)候才會(huì)去連接數(shù)據(jù)庫(額外的情況是,在系統(tǒng)第一次實(shí)例化模型的時(shí)候,會(huì)自動(dòng)連接數(shù)據(jù)庫獲取相關(guān)模型類對(duì)應(yīng)的數(shù)據(jù)表的字段信息)。
新聞標(biāo)題:php數(shù)據(jù)庫的連接封裝 php連接數(shù)據(jù)庫的函數(shù)
轉(zhuǎn)載來于:http://jinyejixie.com/article16/ddccsdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、品牌網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、用戶體驗(yàn)、網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)