利用thinkphp(3.2.3)来操作数据库,首先要连接数据库。我们需要对某数据库写一个配置文件,thinkphp会根据该配置文件自动连接上数据库。而model文件就不用自定义,内置的即可解决问题。配置文件写于目录application\home\conf\config.php下:

<?php
return array(
//'配置项'=>'配置值'
'DB_TYPE'=> 'mysql',//数据库类型
'DB_HOST'=> '127.0.0.1',//服务器地址
'DB_NAME'=>'jiu151231',//数据库名称
'DB_USER'=>'root',//用户名
'DB_PWD'=>'',//密码
'DB_PORT'=>'3306',//端口
'DB_PREFIX'=>'',//数据库表前缀
);

到此,准备工作完成。其中,那个数据库表前缀,网上关于默认各种说法,我的默认为空。估计其他前缀,打开phpmyadmin可以看到吧。

CURD操作代码都在目录application\home\controller\indexcontroller.class.php里,这是控制器文件。下面都是采用M方法实例化表对象的。

C

插入数据

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$jiu0=M('myguests');
$j0['firstname']='lv';
$j0['lastname']='oe';
$jiu0->add($j0);
}
}

插入多条数据

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$jiu0=M('myguests');
$list[]=array('firstname'=>'li','lastname'=>'weifeng');
$list[]=array('firstname'=>'liu','lastname'=>'tian');
$jiu0->addAll($list);
}
}

R

读单条记录 find方法返回第一个符合条件的记录

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu=M('myguests');
$data=$gu->where('firstname="lv"')->find();
dump($data);
}
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu=M('myguests');
$gu->where('firstname="lv"')->find();
dump($gu->data());
}
}

读多条数据 select方法 如果查询出错,select的返回值是false,如果查询结果为空,则返回NULL,否则返回二维数组。

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$list = $gu->where('firstname="lv"')->order('id')->limit(5)->select();//返回5条数据
dump($list);
}
}

读取字段值

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$list = $gu->where('id=5')->getField('firstname');
dump($list);
}
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$list = $gu->getField('id',true);//返回整列
dump($list);
}
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$list = $gu->getField('id,firstname',5);//返回多列,5条记录
dump($list);
}
}

U

save方法

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$data['firstname']='liu';
$data['lastname']='hl';
$gu->where('id=5')->save($data);
}
}
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$gu->firstname='liu';
$gu->lastname='hl';
$gu->where('id=6')->save();
}
}

更新字段

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$gu->where('id=6')->setField('firstname','wang');
}
}

更新多个字段

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$data=array('firstname'=>'lv','lastname'=>'huan');
$gu->where('id=1')->setField($data);
}
}

而对于统计字段(通常指的是数字类型)的更新,系统还提供了 setInc 和 setDec 方法。

$User = M("User"); // 实例化User对象
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1

3.2.3版本开始,setInc和setDec方法支持延迟更新,用法如下:

$Article = M("Article"); // 实例化Article对象
$Article->where('id=5')->setInc('view',1); // 文章阅读数加1
$Article->where('id=5')->setInc('view',1,60); // 文章阅读数加1,并且延迟60秒更新(写入)

D

delete方法

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$gu = M("myguests");
$gu->delete(2);//删除主键2对应的记录
}
}

delete方法可以删除单个数据,也可以删除多个数据,这取决于删除条件,例如:

$User = M("User"); // 实例化User对象
$User->where('id=5')->delete(); // 删除id为5的用户数据
$User->delete('1,2,5'); // 删除主键为1,2和5的用户数据
$User->where('firstname="lv"')->delete(); // 删除所有firstname为"lv"的用户数据

thinkphp对mysql的CURD操作的更多相关文章

  1. MySQL 的 CURD 操作

    0. 说明 CURD 操作通常是使用关系型数据库系统中的结构化查询语言(Structured Query Language,SQL)完成的 CURD 定义了用于处理数据的基本原子操作 CURD 代表创 ...

  2. ThinkPHP中简单的CURD操作

    前言 我们通过一个简答例子来简述CURD的操作.首先看一下数据库的样子,其中id为自增行,其它是varchar 一.查询操作 首先,创建在Controller文件夹下创建一个User控制器,在该控制器 ...

  3. ThinkPHP CURD 操作

    Thinkphp CURD操作php中实例还对象即可操作 (目录) 1.Add 1 调式程序 3 调出显示页面Trace信息 3 Dump 的含义 4 2.数据库查询 4 1.直接使用字符串进行查找 ...

  4. TP中CURD操作

    CURD操作 CURD操作也就是模型操作数据表的基本操作.C(Create).U(Update).R(Read).D(Delete)操作就是增删改查操作. 6.1.增加操作 回想一下在mysql中增加 ...

  5. php对xml文件进行CURD操作

    XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...

  6. ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

    //TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...

  7. 一个简单的ORM制作(CURD操作类)

    SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...

  8. 通过jdbc完成单表的curd操作以及对JDBCUtils的封装

    概述:jdbc是oracle公司制定的一套规范(一套接口),驱动是jdbc的实现类,由数据库厂商提供.所以我们可以通过一套规范实现对不同的数据库操作(多态) jdbc的作用:连接数据库,发送sql语句 ...

  9. Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作

    1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...

随机推荐

  1. NOIP模拟题 序列

    题目大意 给定长为$n$的序列$A$,定义长为$k$的区间中位数为从小到大排完序后第$\lfloor\frac{k}{2}\rfloor$个数的大小. 每次询问给定$l_1,r_1,l_2,r_2$有 ...

  2. HihoCoder 1104 : Suzhou Adventure(树形DP)

    Suzhou Adventure 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is taking an adventure in Suzhou n ...

  3. Struts2 级联下拉框 详解析

    目录(?)[+] 运行环境:myeclipse8.6+jboss5.1+jvm1.6 先看最后目录结构: 直接上源码: complexFormTag.jsp: <%@ page language ...

  4. mysql 执行批量的sql

    <?xml version="1.0" encoding="utf-8" ?> <dbconfig> <!-- 数据库驱动 --& ...

  5. 题目1534:数组中第K小的数字 ——二分

    http://ac.jobdu.com/problem.php?pid=1534 给定两个整型数组A和B.我们将A和B中的元素两两相加可以得到数组C.譬如A为[1,2],B为[3,4].那么由A和B中 ...

  6. pidstat

    统计系统上的某个进程占用的磁盘读写 pidstat -d   -p   pidNumber  3 -d  表示磁盘设备 -p 指定pid 3 表示每三秒刷新一次结果

  7. 数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)

    主要内容 1.标准输入输出和错误 2.管道命令和 grep, tr,sort, wc, cut,split,tee,sleep 标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0, ...

  8. Avro之一:Avro简介

    一.引言 1. 简介 Avro是Hadoop中的一个子项目,也是Apache中一个独立的项目,Avro是一个基于二进制数据传输高性能的中间件.在Hadoop的其他项目中例如HBase(Ref)和Hiv ...

  9. AngularJS:过滤器

    ylbtech-AngularJS:过滤器 1.返回顶部 1. AngularJS 过滤器 过滤器可以使用一个管道字符(|)添加到表达式和指令中. AngularJS 过滤器 AngularJS 过滤 ...

  10. Oracle10g客户端连接远程数据库配置图解

    yuanwen:http://blog.csdn.net/DKZhu/article/details/6027933 一.      安装oracle客户端 1. 运行setup.exe,出现 2. ...