一、tp框架数据访问(pdo基础)

public function test()
{
  $n = D("Nation");

 //select();find();    //查询

  1.$attr = $n->select();//查所有,返回一个关联数组,二维关联数组
  2.$attr = $n->select("n001,n002");//根据参数(主键值)查
  3.$attr = $n->find("n002");//查一条数据,一维数组,参数必须是主键值
 //where    //连贯操作
  4.$n->where()->select();//加条件,$n->where()返回一个对象
    $n->where("name=>'汉族' or name='回族'")->select();
  5.table    //如果查Nation表以外的数据,用table
    $attr = $n->table("info")->select();
  6.field    //指定字段查询(查某几列)
    $attr = $n->field("code")->select();
  7.order    //排序
    $attr = $n->order("code desc")->select();
  8.limit    //分页
    $a = $n->limit(3,5)->select();//跳过3条数据取5条数据
    $a = $n->limit(3)->select();//取3条数据
  9.page    //分页
    $a = $n->page(3,5)->select();//第3页显示5条数据,根据条数来自动分页
  10.group    //分组
    $a = $nation->field("Brand,avg(Price)")->group("Brand")->select();
  11.having    //分完组加条件
    $a = $nation->field("Brand,avg(Price)")->group("Brand")->having("avg(Price)>40")->select();
  12.distinct    //去重
    $a = $nation->field("Brand")->distinct(true)->select();
  13.getField    //获取某字段的数据,只能给列名查询,不写where条件,默认给索引最小的字段
    $a = $nation->where("code='n001'")->getField("name");
  14.sum,count,max,min
    $a = $nation->table("car")->sum(Price);
  15.join..on    //给索要查询的列都 as 给一个别名显示,别名自定义即可
    $a = $nation->field("Info.code as 'code',Info.name as 'name',Nation.name as '民族'")->join("Info on Info.nation=Nation.code")->select();
  16.cache    //数据缓存
  17.query    //原生sql语句查询
    $sql = "select * from nation";
    $a = $nation->query($sql);
  18.execute    //原生sql语句其他操作 修改
    $sql = "update Nation set name='满族' where code='n001'";
    $a = $nation->execute($sql);

  var_dump($a);
}

二、数据添加

<?php
namespace Zuoye\Controller;
use Think\Controller;
class MainController extends Controller
{
    public function test()
    {
        //造模型对象
        $n = D("Nation");

        //使用数组的方式添加
        $attr = array("Code"=>"n100","Name"=>"汉族");
        $n->add($attr);

        //使用AR的方式
        $n->Code="n099";
        $n->Name="回族";
        $n->add();

    }
    public function _empty()
    {
        echo "连接失败!";
    }
}

三、通过地址栏传参数,如:Main/canshu/id/5,方法来接收使用

<?php
namespace Lianxi\Controller;
use Think\Controller;
class MainController extends Controller
{
    //通过地址栏传参数,如:Main/canshu/id/5,方法来接收使用
    public function canshu($id)
    {
        //方法一
        //echo $_GET["id"];
        //方法二:canshu($id)
        echo $id;//如果给$id赋值canshu($id=0)时,地址栏不给参数也不会报错
    }
}

四、自动收集表单(功能强大,把表单里面的内容用create方法快速收集)

Application/Lianxi/controller/MainController.class.php

<?php
namespace Lianxi\Controller;
use Think\Controller;
class MainController extends Controller
{
    public function Biaodan()
    {
        //实现两个逻辑
        //1.显示添加页面2.往数据库添加数据
        if(empty($_POST))
        {
            $this->show();
        }
        else
        {
            $n = D("Nation");
            $n->create();//自动收集表单,前提是必须有post数据,如果post为空,走if;html页面中input里面的name一定要对应数据库表的的列名,大小写敏感
            $z = $n->add();
            if($z)
            {
                //跳转方法一
                //$this->success("添加成功","Biaodan",5);//5是跳转时间,间隔5秒
                //跳转方法二
                $this->redirect('Biaodan',array(),5,"页面跳转中...");//array('id'=>2),跳转页面的同时可以传参数,关联
            }
            else
            {
                $this->error("添加失败!");//一个参数就可以,error失败默认返回前一个页面
            }
        }
    }
}

Application/Lianxi/view/Main/Biaodan.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form action="__SELF__" method="post">
<div>代号:<input type="text" name="Code" /></div>
<div>名称:<input type="text" name="Name" /></div>
<input type="submit" value="添加" />
</form>
</body>
</html>

1.跳转页面失败后如何把错误信息去掉的问题:

2.在表单<form>里面的action指向哪里的问题:指向__SELF__或者__ACTION__

先var_dump(get_defined_constants(true));显示出系统常量,找到__SELF__和__ACTION__;

__SELF和__ACTION__的区别:__SELF__访问的是自身,就是浏览器访问的地址,如:localhost/tp/index.php/Home/Main/Biaodan/code/10(code和10是随意传的参数),__ACTION__只能访问到Biaodan(方法)这里

ThinkPHP数据库访问CRUD;__SELF__和__ACTION__的区别;自动收集表单:$n->create();的更多相关文章

  1. 数据库访问CRUD;__SELF__和__ACTION__的区别;自动收集表单:$n->create();

    一.tp框架数据访问(pdo基础) public function test() { $n = D("Nation"); //select();find(); //查询 1.$at ...

  2. 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD)

    一些小的C/S项目(winform.WPF等),因需要访问操作数据库,但又不能把DB连接配置在客户端上,原因有很多,可能是DB连接无法直接访问,或客户端不想安装各种DB访问组件,或DB连接不想暴露在客 ...

  3. 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式

    适用于app.config与web.config的ConfigUtil读写工具类   之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...

  4. 使用Repository模式构建数据库访问层

    使用Repository模式构建数据库访问层 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[二]——使用Repository模式构建数据库访问层 系列导航地址http:// ...

  5. Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

    只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...

  6. ThinkPHP 数据库操作(一) : 连接数据库

    ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操 作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用 P ...

  7. [转]DbHelper通用数据库访问帮助类

    之前我一直都是在博客园中查看各位高手的博文,确实学到了不少知识,不过比较少写博客,现在就把我自己在项目实施过程中使用到比较好的技术框架写出来,希望能让更多的人了解和学习. 通常我们在开发使用数据库访问 ...

  8. 第7章 数据库访问与ORM 慕课网微信小程序开发学习笔记

    第7章 数据库访问与ORM https://coding.imooc.com/learn/list/97.html 目录: 7-1 数据库操作三种方式之原生SQL 19:09 7-2 从一个错误了解E ...

  9. 架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft ...

随机推荐

  1. ecshop调用后台指定广告位下所有广告循环

    ecshop本身的广告调用规则是:对某个广告位下的广告列表随机显示其中一条. 而我们有时需要将某个广告位下的所有广告全部显示出来,那么如何处理呢,下面就自己做了一个函数: \includes\lib_ ...

  2. windows网络编程

    1.协议的特征 面向消息的和基于流的 面向连接的和面向无连接的 2.端口分为三类:“已知”端口.已注册端口.动态和私用端口 0~1023 IANA控制,为固定服务保留的 1024~49151 已注册端 ...

  3. VB中复制-粘贴-剪切键实现

    If Me.ActiveControl.GetType.BaseType.ToString = "System.Windows.Forms.TextBoxBase" Then Wi ...

  4. MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  5. 【Xcode 4 无法打开 Xcode 5 DP 打开过的工程文件 解决方法】

    试用Xcode 5 DP打开现有工程文件后再用Xcode4打开后 Xcode 4 会进入崩溃模式折腾了几次发现下面的方法可以让工程文件恢复 如果在Xcode5-DP中打开过xib文件需要在侧栏中修改I ...

  6. 3.通过现有的PDB创建一个新的PDB

    实验说明:创建PDB除了可以通过种子PDB创建外,现在测试通过一个现有的用户PDB克隆创建新的PDB数据库 实验步骤: 1.创建测试数据 SQL> alter session set conta ...

  7. devexpress layoutcontrol 自动生成布局示例代码

    foreach (var row in lst.Select(x => x.crow).Distinct()) { LayoutControlItem layout_preitem = null ...

  8. C语言全局变量那些事儿

    转自:http://blog.csdn.net/bingqingsuimeng/article/details/9405743 作为一名程序员,如果说沉迷一门编程语言算作一种乐趣的话,那么与此同时反过 ...

  9. Android 进程常驻(使用第三方MarsDaemon)(虽然不可用,但是还是保留下。)

    github地址: https://github.com/Marswin/MarsDaemon 原理分析: Android 进程常驻(0)----MarsDaemon使用说明 Android 进程常驻 ...

  10. 【系统篇】从C/C++语言到进程启动背后的故事

    我们需要运行一个程序或者软件,双击之即可完成.不过从你双击到程序的窗口产生的这“短暂”的时间内,Windows为你做了很多的工作. 首先,系统有一个进程监测到了你的双击操作,这个进程就是系统shell ...