xy-ouyang

php(三)使用thinkphp操作数据库

1、数据库设置

  在项目D:\workspaces\phpDemo01\helloworldProject\Common\Conf\config.php配置:

<?php
return array(
    //\'配置项\'=>\'配置值\'
    //\'URL_HTML_SUFFIX\'       =>  \'abc\',  // URL伪静态后缀设置
    
    //使得页面底部显示跟踪信息
    \'SHOW_PAGE_TRACE\' => true,
    
    //设置默认分组
    \'DEFAULT_MODULE\'        =>  \'Home\',  // 默认模块
    //允许访问的分组信息
    //\'MODULE_ALLOW_LIST\'     => array(\'Home\',\'Admin\'),
    
    //设置Smarty模板引起使用
    //\'TMPL_ENGINE_TYPE\'      =>  \'Smarty\',     // 默认模板引擎
    
    //为Smarty配置相关配置
   //\'TMPL_ENGINE_CONFIG\' => array(
        //\'left_delimiter\' => \'<@@@\',
        //\'right_delimiter\' => \'@@@>\',
   // ),
    
    /* 数据库设置 */
    \'DB_TYPE\'               =>  \'mysql\',     // 数据库类型
    \'DB_HOST\'               =>  \'localhost\', // 服务器地址
    \'DB_NAME\'               =>  \'db_test\',          // 数据库名
    \'DB_USER\'               =>  \'root\',      // 用户名
    \'DB_PWD\'                =>  \'\',          // 密码
    \'DB_PORT\'               =>  \'3306\',        // 端口
    \'DB_PREFIX\'             =>  \'t_\',    // 数据库表前缀
    \'DB_PARAMS\'              =>  array(), // 数据库连接参数    
    \'DB_DEBUG\'              =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志
    \'DB_FIELDS_CACHE\'       =>  true,        // 启用字段缓存
    \'DB_CHARSET\'            =>  \'utf8\',      // 数据库编码默认采用utf8
);

 

2、新建Controller类

  D:\workspaces\phpDemo01\helloworldProject\Home\Controller\StuController.class.php

<?php
//命名空间
namespace Home\Controller;
use Think\Controller;

class StuController extends Controller{
    //列表展示
    function showlist(){
        echo "show stuList";
        //$stu = new \Model\StuModel();
        //dump($stu);
        $obj = D(\'stu\');   //实例化Model对象,同时操作"t_stu"数据表
                           //该方式允许我们即使不创建UserModel类,也可以操作t_stu表
        //dump($obj);
        
        $stuList = $obj -> select();
        $this -> assign("stuList", $stuList);
        $this -> display();
    }
}

 

3、模板

  D:\workspaces\phpDemo01\helloworldProject\Home\View\Stu\showlist.html

<!DOCTYPE html>
<html>
<head>
    <title>stu/showlist.html</title>
</head>
<body>
    <h2>stu/showlist.html</h2>
    <?php
        echo "<table border = 1 cellspacing = \'0\' cellpadding = \'10\'>";
        echo "<th>编号</th><th>姓名</th><th>年龄</th><th>操作</th>";
        for($i = 0; $i < count($stuList); $i++) {
            //echo "No" . $i;
            echo "<tr>";
            echo \'<td>\'.$stuList[$i][\'id\'].\'</td>\';
            echo \'<td>\'.$stuList[$i][\'name\'].\'</td>\';
            echo \'<td>\'.$stuList[$i][\'age\'].\'</td>\';
            echo \'<td><a href = "del.php?id=\'.$row[\'id\'].\'">删除</a>/<a href = "update.php?id=\'.$row[\'id\'].\'">修改</a></td>\';
            echo "</tr>";
        }
    ?>
</body>
</html>

 

4、测试

  浏览器输入:http://web.abc123.com/helloworldProject/index.php/Home/stu/showlist,结果:

5、thinkphp数据查询总结

<?php
//命名空间
namespace Home\Controller;
use Think\Controller;

class StuController extends Controller{
    //列表展示
    // function showlist(){
    //     echo "show stuList";
    //     //$stu = new \Model\StuModel();
    //     //dump($stu);
    //     $obj = D(\'stu\');   //实例化Model对象,同时操作"t_stu"数据表
    //                        //该方式允许我们即使不创建UserModel类,也可以操作t_stu表
    //     //dump($obj);
        
    //     $stuList = $obj -> select();
    //     $this -> assign("stuList", $stuList);
    //     $this -> display();
    // }

    // function showlist(){
    //     echo "StuController getStuById";
        
    //     $obj = D(\'stu\');   //实例化Model对象,同时操作"t_stu"数据表
    //                        //该方式允许我们即使不创建UserModel类,也可以操作t_stu表
        
    //     $stuList = $obj -> select(1);
    //     $this -> assign("stuList", $stuList);
    //     $this -> display();
    // }

    // function showlist(){
    //     echo "StuController getStuById";
        
    //     $obj = D(\'stu\');   //实例化Model对象,同时操作"t_stu"数据表
    //                        //该方式允许我们即使不创建UserModel类,也可以操作t_stu表
        
    //     $stuList = $obj -> select("1,2");
    //     $this -> assign("stuList", $stuList);
    //     $this -> display();
    // }

    function showlist(){
        echo "StuController getStuByName";
        
        $obj = D(\'stu\');   //实例化Model对象,同时操作"t_stu"数据表
                           //该方式允许我们即使不创建UserModel类,也可以操作t_stu表
        $obj -> where("name like \'%s%\'");
        $obj -> limit(0,2);
        $obj -> field(\'id,name,age\');
        $obj -> order(\'id desc\');

        // SELECT `age`,count(*) FROM `t_stu` GROUP BY age
        //$obj -> field(\'age,count(*)\');
        //$obj -> group("age");

        $obj -> having(\'age >= 10\');
        // SELECT `id`,`name`,`age` FROM `t_stu` WHERE ( name like \'%s%\' ) HAVING age >= 10 ORDER BY id desc LIMIT 0,2 

        $stuList = $obj -> select();
        $this -> assign("stuList", $stuList);
        $this -> display();
    }
}

 

6、添加操作

<?php
//命名空间
namespace Home\Controller;
use Think\Controller;

class StuController extends Controller{
    // function addStu() {
    //     echo "add stu";

    //     $array = array(
    //         \'name\' => 赵敏,
    //         \'age\' => 25
    //     );

    //     $obj = D(\'stu\');
    //     $id = $obj -> add($array);//主键返回
    //     echo $id;
    //     // INSERT INTO `t_stu` (`name`,`age`) VALUES (\'赵敏\',\'25\') 
    // }

    function addStu() {
        echo "add stu";

        $obj = D(\'stu\');
        $obj -> name = \'周芷若\';
        $obj -> age = 20;

        $id = $obj -> add();//主键返回
        echo $id;
        // INSERT INTO `t_stu` (`name`,`age`) VALUES (\'周芷若\',\'20\') 
    }
}

 

7、修改操作

<?php
//命名空间
namespace Home\Controller;
use Think\Controller;

class StuController extends Controller{function updateStu() {
        echo "update stu";

        // 数据修改必须设置条件:where()或主键id值,二选一即可
        $obj = D(\'stu\');
        $obj -> age = 20;

        $obj -> where("name = \'赵敏\'");
        $result = $obj -> save();//save()方法返回受影响的记录条数
        echo $result;
        // UPDATE `t_stu` SET `age`=\'20\' WHERE ( name = \'赵敏\' )
    }
}

 

分类:

技术点:

相关文章: