一、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(方法)这里

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

  1. ThinkPHP数据库访问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. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  5. 我也来写:数据库访问类DBHelper(转)

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  6. Oracle数据库名、实例名、数据库域名、全局数据库名、服务名之间的区别

    数据库名.实例名.数据库域名.全局数据库名.服务名 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数据库 ...

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

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

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

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

  9. mybatis与数据库访问相关的配置以及设计

    mybatis与数据库访问相关的配置以及设计 mybatis不管如何NB,总是要与数据库进行打交道.通过提问的方式,逐步深入 我们常用的MyBatis配置中哪些是与数据库相关? 数据源配置: < ...

随机推荐

  1. 【Spring实战】—— 12 AspectJ报错:error at ::0 can't find referenced pointcut XXX

    今天在使用AspectJ进行注解切面时,遇到了一个错误. 切点表达式就是无法识别——详细报错信息如下: Exception can't find referenced pointcut perform ...

  2. 关于Promise模式 整理中。。。

    http://blog.csdn.net/womendeaiwoming/article/details/49849055 研究了几天Promise模式,因为在项目里也遇到了所谓的“回调陷阱”,就是多 ...

  3. unlink和close关系

    今天看到nginx用文件锁实现互斥的实现方案时,发现,unlink文件后还可需用fd,很是纳闷!于是搜索到此文,并自测了下,涨姿势了~分享给大家~ 原理: 每一个文件,都可以通过一个struct st ...

  4. jqueyr eq get用法

    相信大部份人都会把这2个的用法搞错.仔细查看下API文档就可以知道.eq返回的是一个jquery对象,get返回的是一个html 对象数组.举个例子: <p style="color: ...

  5. 关于POI解析Excel文件(03和07版本不同)的问题

    问题描述:在使用poi包进行excel解析时,发现对Excel2003以前(包括2003)的版本没有问题,但读取Excel2007时发生如下异常:org.apache.poi.poifs.filesy ...

  6. ACM:UESTC - 649 括号配对问题 - stack

      UESTC - 649  括号配对问题 Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu ...

  7. jQuery 使得文本框获得焦点

      今天遇见这么一个小小的问题,就是文本框中需要输入内容才可以提交,如果没有输入就提示并使该文本框获得焦点! 这么一个简单的事情如果没有使用jQuery的话 是不是对象.focus()就可以了, 可是 ...

  8. JAVA_Android APK反编译就这么简单 详解(附图)

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  9. Browsersync — 省时的浏览器同步测试工具

    Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平板.手机等设备下进项调试. ...

  10. C++11 auto and decltype

    1.auto关键字 C++新标准引入auto关键词,此auto与之前C语言的auto意义已经不一样了. 这里的auto是修饰未知变量的类型,编译器会通过此变量的初始化自动推导变量的类型. 例如:aut ...