文件6:(Db.php)数据库联接管理类,用于共享并管理数据的访问。由于这个类涉及的内容不是本章要讨论的内容,所以这个类模拟了“真实的数据库管理类的方法”,借口是和正常的类是一样的,但是接口函数里面的内容是不对的,只是模拟的数据。网上有很多这种类的做法,可以自己到晚上找找,(**另外本系列文章的第二章里也有详细的介绍**)。<?php
//数据库操作管理类
class Db{
   //数据库联接
   var $con;
   //初始化
   function Db(){
       //$this->con=mysql_connect(********************);...........
   }
   //执行数据查询语句
   function &query($sql){
       //$result = mysql_query($sql); ..................
       //return $result;
       if($sql=="SELECT * FROM student WHERE stu_clsid=2")
        return array('0'=>array('stu_id'=>1, 'stu_clsid'=>2, 'stu_name'=>'student1'),
                      '1'=>array('stu_id'=>2, 'stu_clsid'=>2, 'stu_name'=>'student2')
                         );
       die('空班级');
   }
   //获取一条数查询结果
   function getOne($sql){
       //$result = mysql_query($sql); .............
       //return $result[0];
       if($sql=="SELECT * FORM class WHERE cls_id=1")
        return null;
       if($sql=="SELECT * FORM class WHERE cls_id=2")
        return array("cls_id"=>2, "cls_name"=>"classname", "cls_address"=>"classaddress");
   }
   //执行数据库更新/添加/删除语句
   function execute($sql){
      //mysql_query($sql);
      echo "<br>正在进行插入操作<br>...<br>插入操作完成<br>";
      return true;
   }
}
?>
测试文件一、(ModelTest1.php)(查询班级标号(cls_id)为2的班级的学生的名单)<?php
error_reporting(E_ALL);
require_once "Db.php";
require_once "Model.php";
require_once "Manager.php";$classId = 2;require_once "./Model/ClassManager.php";
$manager = new ClassModelManager();
$model = $manager->findOneModel($classId);
$data = &$model->getStudent();
foreach($data as $value)
echo "编号:".$value["stu_id"]." ------ 姓名: ".$value["stu_name"]."<br>";
?>返回的结果是:编号:1 ------ 姓名: student1
编号:2 ------ 姓名: student2
测试文件二、(ModelTest2.php)(查询班级标号(cls_id)为1的班级的学生的名单)<?php
error_reporting(E_ALL);
require_once "Db.php";
require_once "Model.php";
require_once "Manager.php";$classId = 1;require_once "./Model/ClassManager.php";
$manager = new ClassModelManager();
$model = $manager->findOneModel($classId);
$data = &$model->getStudent();
foreach($data as $value)
echo "编号:".$value["stu_id"]." ------ 姓名: ".$value["stu_name"]."<br>";
?>
返回的结果是:该班级不存在!
测试文件三、(ModelTest3.php)(执行数据库的插入工作,向student表添加数据)<?php
error_reporting(E_ALL);
require_once "Db.php";
require_once "Model.php";
require_once "Manager.php";$data = array('stu_id'=>3, 'stu_clsid'=>2, 'stu_name'=>'student3');
require_once "./Model/StudentModel.php";
$model = new StudentModel($data);
require_once "./Model/StudentManager.php";
$manager = new StudentManager($data);
$result = $manager->insert($model);
echo $result? "<h2>插入操作成功</h2>": "<h2>插入操作失败</h2>";
?>返回的结果是:正在进行插入操作
...
插入操作完成插入操作成功
测试文件四、(ModelTest4.php)(执行数据库的插入工作,向student表添加数据)<?php
error_reporting(E_ALL);
require_once "Db.php";
require_once "Model.php";
require_once "Manager.php";$data = array('stu_id'=>3, 'stu_name'=>'student3');
require_once "./Model/StudentModel.php";
$model = new StudentModel($data);
require_once "./Model/StudentManager.php";
$manager = new StudentManager($data);
$result = $manager->insert($model);
echo $result? "<h2>插入操作成功</h2>": "<h2>插入操作失败</h2>";
?>返回的结果是:stu_clsid 的数值不能为空结果分析:StudentModel中"match"的规定stu_clsid的值是不能为空的,
而代码中代码中$data = array('stu_id'=>3, 'stu_name'=>'student3');
缺少stu_clsid的值,因此不能通过数据的完整性校验,抱错.