php+mysql数据库类Word格式.docx
- 文档编号:18453505
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:22
- 大小:22.94KB
php+mysql数据库类Word格式.docx
《php+mysql数据库类Word格式.docx》由会员分享,可在线阅读,更多相关《php+mysql数据库类Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
__construct($pconnect,$nconnect);
functionInit($pconnect=false)
linkID=0;
queryString="
parameters=Array();
dbHost=$GLOBALS["
cfg_dbhost"
];
dbUser=$GLOBALS["
cfg_dbuser"
dbPwd=$GLOBALS["
cfg_dbpwd"
dbName=$GLOBALS["
cfg_dbname"
dbPrefix=$GLOBALS["
cfg_dbprefix"
result["
me"
]=0;
Open($pconnect);
//用指定参数初始数据库信息
functionSetSource($host,$username,$pwd,$dbname,$dbprefix="
dede_"
)
dbHost=$host;
dbUser=$username;
dbPwd=$pwd;
dbName=$dbname;
dbPrefix=$dbprefix;
functionSelectDB($dbname)
mysql_select_db($dbname);
//设置SQL里的参数
functionSetParameter($key,$value){
parameters[$key]=$value;
//连接数据库
functionOpen($pconnect=false)
global$dsql;
//连接数据库
if($dsql&
&
!
$dsql->
isClose)$this->
linkID=$dsql->
linkID;
else
if(!
$pconnect){$this->
linkID=@mysql_connect($this->
dbHost,$this->
dbUser,$this->
dbPwd);
else{$this->
linkID=@mysql_pconnect($this->
//复制一个对象副本
CopySQLPoint($this);
//处理错误,成功连接则选择数据库
$this->
linkID){
//echo$this->
GetError();
DisplayError("
DedeCms错误警告:
fontcolor='
red'
>
连接数据库失败,可能数据库密码不对或数据库服务器出错,如未安装本系统,请先运行安装程序,如果已经安装,请检查MySQL服务或修改include/config_base.php的配置!
/font>
);
exit();
}
@mysql_select_db($this->
dbName);
$mysqlver=explode('
.'
$this->
GetVersion());
$mysqlver=$mysqlver[0].'
.$mysqlver[1];
if($mysqlver>
4.0)@mysql_query("
SETNAMES'
.$GLOBALS['
cfg_db_language'
]."
'
linkID);
5.0)@mysql_query("
SETsql_mode='
;
$this->
returntrue;
//获得错误描述
functionGetError()
$str=ereg_replace("
|\"
"
`"
mysql_error());
return$str;
//关闭数据库
functionClose()
@mysql_close($this->
isClose=true;
if(is_object($GLOBALS['
dsql'
])){$GLOBALS['
]->
FreeResultAll();
//-----------------
//定期清理死连接
functionClearErrLink()
global$cfg_dbkill_time;
if(empty($cfg_dbkill_time))$cfg_dbkill_time=30;
@$result=mysql_query("
SHOWPROCESSLIST"
if($result)
while($proc=mysql_fetch_assoc($result))
if($proc['
Command'
]=='
Sleep'
&
$proc['
Time'
]>
$cfg_dbkill_time)@mysql_query("
KILL"
.$proc["
Id"
],$this->
//关闭指定的数据库连接
functionCloseLink($dblink)
@mysql_close($dblink);
//执行一个不返回结果的SQL语句,如update,delete,insert等
functionExecuteNoneQuery($sql="
if($dsql->
isClose){
Open(false);
$dsql->
if($sql!
="
)$this->
SetQuery($sql);
if(is_array($this->
parameters)){
foreach($this->
parametersas$key=>
$value){
$this->
queryString=str_replace("
@"
.$key,"
$value'
queryString);
}
returnmysql_query($this->
queryString,$this->
//执行一个返回影响记录条数的SQL语句,如update,delete,insert等
functionExecuteNoneQuery2($sql="
mysql_query($this->
returnmysql_affected_rows($this->
functionExecNoneQuery($sql="
return$this->
ExecuteNoneQuery($sql);
//执行一个带返回结果的SQL语句,如SELECT,SHOW等
functionExecute($id="
$sql="
result[$id]=@mysql_query($this->
result[$id]){
DisplayError(mysql_error()."
-ExecuteQueryFalse!
<
.$this->
queryString."
functionQuery($id="
Execute($id,$sql);
//执行一个SQL语句,返回前一条记录或仅返回一条记录
functionGetOne($sql="
$acctype=MYSQL_BOTH)
){
eregi("
limit"
$sql))$this->
SetQuery(eregi_replace("
[,;
]$"
trim($sql))."
limit0,1;
else$this->
Execute("
one"
$arr=$this->
GetArray("
$acctype);
is_array($arr))return("
else{@mysql_free_result($this->
]);
return($arr);
}
//执行一个不与任何表名有关的SQL语句,Create等
functionExecuteSafeQuery($sql,$id="
result[$id]=@mysql_query($sql,$this->
//返回当前的一条记录并把游标移向下一记录
//MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH
functionGetArray($id="
if($this->
result[$id]==0)returnfalse;
elsereturnmysql_fetch_array($this->
result[$id],$acctype);
functionGetObject($id="
elsereturnmysql_fetch_object($this->
result[$id]);
//检测是否存在某数据表
functionIsTable($tbname)
result[0]=mysql_list_tables($this->
dbName,$this->
while($row=mysql_fetch_array($this->
result[0]))
if(strtolower($row[0])==strtolower($tbname))
{
mysql_freeresult($this->
result[0]);
returntrue;
mysql_freeresult($this->
returnfalse;
//获得MySql的版本号
functionGetVersion()
$rs=mysql_query("
SELECTVERSION();
$row=mysql_fetch_array($rs);
$mysql_version=$row[0];
mysql_free_result($rs);
return$mysql_version;
//获取特定表的信息
functionGetTableFields($tbname,$id="
result[$id]=mysql_list_fields($this->
dbName,$tbname,$this->
//获取字段详细信息
functionGetFieldObject($id="
returnmysql_fetch_field($this->
//获得查询的总记录数
functionGetTotalRow($id="
result[$id]==0)return-1;
elsereturnmysql_num_rows($this->
//获取上一步INSERT操作产生的ID
functionGetLastID()
//如果AUTO_INCREMENT的列的类型是BIGINT,则mysql_insert_id()返回的值将不正确。
//可以在SQL查询中用MySQL内部的SQL函数LAST_INSERT_ID()来替代。
//$rs=mysql_query("
SelectLAST_INSERT_ID()aslid"
//$row=mysql_fetch_array($rs);
//return$row["
lid"
returnmysql_insert_id($this->
//释放记录集占用的资源
functionFreeResult($id="
@mysql_free_result($this->
functionFreeResultAll()
is_array($this->
result))return"
foreach($this->
resultas$kk=>
$vv){
if($vv)@mysql_free_result($vv);
//设置SQL语句,会自动把SQL语句里的#@__替换为$this->
dbPrefix(在配置文件中为$cfg_dbprefix)
functionSetQuery($sql)
$prefix="
#@__"
$sql=str_replace($prefix,$this->
dbPrefix,$sql);
queryString=$sql;
functionSetSql($sql)
//显示数据链接错误信息
functionDisplayError($msg)
echo"
html>
\r\n"
head>
metahttp-equiv='
Content-Type'
content='
text/html;
charset=utf-8'
title>
DedeCmsErrorTrack<
/title>
/head>
body>
\r\n<
pstyle='
line-helght:
150%;
font-size:
10pt'
echo$msg;
br/>
/p>
/body>
/html>
//$this->
Close();
//exit();
//复制一个对象副本
functionCopySQLPoint(&
$ndsql)
$GLOBALS['
]=$ndsql;
DEDECMS系统的整体架构.txt2009-03-2211:
30发"
IT柏拉图"
第2天的讲课内容
第二天培训小结
2008年7月10日星期四
DEDECMS系统的整体架构
1.系统入口
程序通过执行根目录下的index.php文件来加载整个应用程序。
/include/inc_arcpart_view.php是程序的核心文件
/include/config_base.php是程序全局配置以及数据库系统配置文件
对于config_base.php文件主要包括了安全检测,数据库配置,函数库调用,和站点的全局配置信息。
/inc_functions.php是系统的通用函数库
/include/inc_arcpart_view.php是用于解析和创建全局性质的模板,以生成各个页面的显示信息,如频道页,列表页等。
2.数据库类的使用
在系统入口文件中,引入了config_base.php前如果没设置$__ONLYCONFIG变量,系统会自动载入pub_db_mysql.php文件,并用$dsql=newDedeSql(false);
进行初始化数据库连接,因此在工程所有文件中均不需要单独初始化这个类,可直接用$dsql进行操作,并且在进行完指定操作后不要关闭数据库连接,在页面最底下调用ClearAllLink();
函数即可。
对于数据库类常用的方法如下:
1、执行一个非select类型的SQL语句,如insert、create、update等,只需要按照下列模型编写程序,返回操作状态:
$rs=$dsql->
返回信息给$rs变量的是一个BOOL型信息,表示时候操作成功!
2、执行一个非查询类型的SQL语句,并返回成功记录数
ExecuteNoneQuery2($sql);
这里返回信息给$rs变量的是一个int数据,这里表示对数据库的影响行数。
3、对于select类型返回单个记录
$arr=$dsql->
GetOne($sql);
4、执行条件查询语句
SetQuery($dsql);
Execute();
while($arr=$dsql->
GetArray())
可以简化为:
Execute('
me'
$dsql);
为记录集游标,用于区分不同的查询,如:
2'
$dsql2);
while($arr2=$dsql->
这里查询进行了二重SQL嵌套,因此必须进行游标区分,否则数据库将无法识别查询信息。
GetArray($rsid,$acctype)参数
$rsid="
$acctype=MYSQL_ASSOC
在查询游标中读取数据还可以用
GetObject($rsid="
返回的结果是用类结构表示的值。
其余的一些获取数据库相关信息的方法:
5、获取上一个插入的自动递增主键id值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- php mysql 数据库