ZendFrameset 数据库CURD操作

CurdController.php

<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/4/6
 * Time: 15:57
 * 某表格CURD操作
 */
require_once 'DBController.php';
require_once APPLICATION_PATH . '/models/student.php';
require_once APPLICATION_PATH . '/models/course.php';
require_once APPLICATION_PATH . '/models/sc.php';

class CurdController extends DBController
{
    public function indexAction() {
        $studentModel = new student();
        $courseModel = new course();
        $scModel = new sc();
        $db = $courseModel->getAdapter();
        $db2 = $studentModel->getAdapter();
        $db3 = $scModel->getAdapter();

        //检索全部信息字段
        //创建数据库适配器
        $courses = $courseModel->fetchAll()->toArray();
        $this->view->courses = $courses;
        //CURD
        //增加记录
        /*$data = array(
            'id' => '1',
            'name' => 'ZF',
            'credit' => '3'
        );
        $courseModel->insert($data);*/
        //修改记录
/*        $set = array(
            'credit' => 2
        );
        $where = "id = 1";
        $courseModel->update($set, $where);*/
        //删除记录
/*        $where = "id = 1";
        $courseModel->delete($where);*/
        //根据主键查询
        //查询学生号位20040001学生
        $students1 = $studentModel->find(20040001)->toArray();
        $this->view->students1 = $students1;
        //查询多个学生
        $students2 = $studentModel->find(array(20040001,'20040002'))->toArray();
        $this->view->students2 = $students2;
        //取回一条记录
        $students3 = $studentModel->fetchRow("sex = 'M'",'age')->toArray();
        $this->view->students3 = $students3;
        //用Model与Adapter时间差别
        //简单原则:
        //1.若查询部分字段,用Adapter
        //2.若涉及多表查询,用Adapter
        //3.若考虑SQL注入问题 用Adapter $adapter->query()->fetchall();
        //4.若增加、删除、修改、查询某张单表的全部字段(包括分页),用表模型
        //过滤重复值distinct
        //显示所有学生性别、年龄
        $students4 = $db2->query('SELECT DISTINCT dept FROM student')->fetchAll();
        $this->view->students4 = $students4;
        $students5 = $db2->query('SELECT COUNT(DISTINCT dept) c FROM student')->fetchAll();
        $this->view->students5 = $students5;
        //查询各系总人数
        //SELECT COUNT( * ) , dept FROM student GROUP BY dept
        //查询计算机系总人数
        $students6 = $db2->query("SELECT count(*) c, dept FROM student WHERE dept = '计算机系' GROUP BY dept")->fetchAll();
        $this->view->students6 = $students6;
        //查询各科总分
        //SELECT SUM( grade ) s, cid FROM sc GROUP BY cid
        //查询总分
        $sc1 = $db3->query("SELECT sum(grade) s FROM sc");
        $this->view->sc1 = $sc1;
        //查询选修11号课程的最高和最低分
        $sc2 = $db3->query("SELECT max(grade) x, min(grade) n, cid FROM sc WHERE cid=11")->fetchAll();
        $this->view->sc2 = $sc2;
        //显示各科考试不及格学生名字,科目和分数
        $sc3 = $db3->query("SELECT student.name sn, course.name cn, grade 
            FROM student, course, sc 
            WHERE grade < 60 
            AND sc.sid = student.id 
            AND sc.cid = course.id")->fetchAll();
        $this->view->sc3 = $sc3;
        //计算各科不及格的学生数
        //不显示学生数为0的科目
        //SELECT name, COUNT( sid ) c FROM sc, course WHERE grade <60 AND sc.cid = course.id GROUP BY cid
        //显示学生数为0的科目
        $sc4 = $db3->query("
            SELECT name, count(grade) c FROM course 
            LEFT JOIN (
                SELECT cid, grade FROM course, sc 
                WHERE grade<60 AND course.id = sc.cid
            ) t
            ON course.id = t.cid GROUP BY name
        ")->fetchAll();
        $this->view->sc4 = $sc4;
    }
}

FetchallController.php

<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/4/6
 * Time: 9:57
 * Zend_Table
 */
require_once 'DBController.php';
require_once APPLICATION_PATH . '/models/student.php';
require_once APPLICATION_PATH . '/models/course.php';
require_once APPLICATION_PATH . '/models/sc.php';

class FetchallController extends DBController
{
    public function indexAction()
    {
        //检索全部信息字段
        $studentModel = new student();
        //创建数据库适配器
        $db = $studentModel->getAdapter();
        $students = $studentModel->fetchAll()->toArray();
        $this->view->students = $students;
        //显示前三个男学生,按年龄排序
        //$students->fetchAll($where, $order, $count, $offset);
        // SELECT * FROM student
        //     WHERE sex = 'M'
        //     ORDER BY age DESC
        //     LIMIT 3 OFFSET 0
        $where = $db->quoteInto('1=1 AND sex = ?', M);
        $order = 'age DESC';
        $count = '3';
        $offset = 0;
        $fstudents = $studentModel->fetchAll($where, $order, $count, $offset)->toArray();
        $this->view->fstudents = $fstudents;
        //显示前三个计算机、化学系学生,按年龄排序
        //转码 utf-8格式 quoteInfo在截取奇数个中文utf-8格式时乱码
        $ph = mb_convert_encoding('化学系', 'GBK', 'UTF-8');
        $dept = mb_convert_encoding('计算机系', 'GBK', 'UTF-8');
        $where = $db->quoteInto('1=1 AND dept IN(?)', array($dept, $ph));
        $where = mb_convert_encoding($where, 'UTF-8', 'GBK');
        $order = 'age DESC';
        $count = '3';
        $offset = 0;
        $jhstudents = $studentModel->fetchAll($where, $order, $count, $offset)->toArray();
        $this->view->jhstudents = $jhstudents;
        //显示前三个计算机系女生,按年龄排序
        $where = $db->quoteInto('1=1 AND dept=?', '计算机系')
            . $db->quoteInto(' AND sex = ?', F);
        $order = 'age DESC';
        $count = '3';
        $offset = 0;
        $students3 = $studentModel->fetchAll($where, $order, $count, $offset)->toArray();
        $this->view->students3 = $students3;
        //检索部分字段信息
        //取出所有student姓名、性别
        $db = $studentModel->getAdapter();
        //使用适配器查询返回数组而非对象,无需toArray()
        $sql = $db->quoteInto('SELECT name, sex FROM student');
        $students4 = $db->query($sql)->fetchAll();
        $this->view->students4 = $students4;
        //取出所有student姓名、性别 参数
        $db = $studentModel->getAdapter();
        //使用适配器查询返回数组而非对象,无需toArray()
        $sql = $db->quoteInto('SELECT name, sex FROM student WHERE sex = ?', 'F');
        $students5 = $db->query($sql)->fetchAll();
        $this->view->students5 = $students5;
        //取出所有student姓名、性别 多参数
        $db = $studentModel->getAdapter();
        //使用适配器查询返回数组而非对象,无需toArray()
        //符号为"=:"   不是">:"!!! “:xxx”不可有空隙
        $students6 = $db->query('SELECT name, sex FROM student WHERE sex = :fm AND dept = :de'
            , array('fm' => 'M', 'de' => 'blabla'))->fetchAll();
        $this->view->students6 = $students6;
    }
}

参考链接:http://blog.csdn.net/u010139093/article/details/24140265

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值