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();
      ?>