上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.3 数据库设计
1.3.1 数据库设计概述
注册及登录验证模块使用的数据库是db_reglog,库中包含了一个数据表tb_member。该表中有12个字段。tb_member表结构及说明如图1.8所示。
图1.8 tb_member表结构及说明
1.3.2 封装数据库连接操作类
为了便于维护,减少代码冗余,本模块使用了一个简单的自定义数据库类。下面给出类中的主要代码。
首先给出的是类中的成员变量,其中$host、$name、$pwd和$dBase变量是类初始化时所使用的,有默认值,其他变量都是相关的数据信息,代码如下:
<? php class opmysql{ private $host = ' localhost' ; //服务器地址 private $name = ' root' ; //登录账号 private $pwd = '111' ; //登录密码 private $dBase = ' db_reglog' ; //数据库名称 private $conn = ' ' ; //数据库连接资源 private $result = ' ' ; //结果集 private $msg = ' ' ; //返回结果 private $fields; //返回字段 private $fieldsNum = 0; //返回字段数 private $rowsNum = 0; //返回结果数 private $rowsRst = ' ' ; //返回单条记录的字段数组 private $filesArray = array(); //返回字段数组 private $rowsArray = array(); //返回结果数组
接下来给出的是构造函数。该构造函数有4个参数,这4个参数都可以被省略而使用默认值。参数处理后,调用init_conn()函数,代码如下:
function __construct($host=' ' , $name=' ' , $pwd=' ' , $dBase=' ' ){ if($host ! = ' ' ) $this->host = $host; if($name ! = ' ' ) $this->name = $name; if($pwd ! = ' ' ) $this->pwd = $pwd; if($dBase ! = ' ' ) $this->dBase = $dBase; $this->init_conn(); }
init_conn()函数根据成员变量中的值来创建数据库连接源,代码如下:
//连接数据库 function init_conn(){ $this->conn=@mysql_connect($this->host, $this->name, $this->pwd); @mysql_select_db($this->dBase, $this->conn); mysql_query("set names gb2312"); //设置编码 }
下面就是类中的操作函数了。先来看查询函数。查询函数根据传过来的SQL语句进行查询,并将查询结果保存到成员变量$result中。符号“@”的作用是屏蔽错误信息,代码如下:
//查询结果 function mysql_query_rst($sql){ if($this->conn == ' ' ){ $this->init_conn(); } $this->result = @mysql_query($sql, $this->conn); }
返回查询记录数函数。根据查询结果,返回记录数,代码如下:
function getRowsNum($sql){ $this->mysql_query_rst($sql); if(mysql_errno() == 0){ return @mysql_num_rows($this->result); }else{ return ' ' ; } }
取得记录数组函数。将查询结果输出成一个数组并返回。该函数处理的是单条记录,代码如下:
function getRowsRst($sql){ $this->mysql_query_rst($sql); if(mysql_error() == 0){ $this->rowsRst = mysql_fetch_array($this->result, MYSQL_ASSOC); return $this->rowsRst; }else{ return ' ' ; } }
取得记录数组函数。功能同上,只是这里返回一个有多条记录的二维数组,代码如下:
//取得记录数组(多条记录) function getRowsArray($sql){ $this->mysql_query_rst($sql); if(mysql_errno() == 0){ while($row = mysql_fetch_array($this->result, MYSQL_ASSOC)) { $this->rowsArray[] = $row; } return $this->rowsArray; }else{ return ' ' ; } }
返回更新、删除、添加的记录数函数。该函数用来更新、删除、添加记录并获取受影响的记录数,用来判断操作是否成功,代码如下:
function uidRst($sql){ if($this->conn == ' ' ){ $this->init_conn(); } @mysql_query($sql); $this->rowsNum = @mysql_affected_rows(); if(mysql_errno() == 0){ return $this->rowsNum; }else{ return ' ' ; } }
释放结果集函数。将不再使用的数据删除,释放内存,代码如下:
function close_rst(){ mysql_free_result($this->result); $this->msg = ' ' ; $this->fieldsNum = 0; $this->rowsNum = 0; $this->filesArray = ' ' ; $this->rowsArray = ' ' ; }
关闭数据库函数,代码如下:
//关闭数据库 function close_conn(){ $this->close_rst(); mysql_close($this->conn); $this->conn = ' ' ; } } $conne = new opmysql(); ?>