利用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. iOS编译集成linux开源c库的一些记录

    最近一个iOS项目需要使用一些Linux下面的开源c库,说是Linux的其实是跨平台的,各种Unix系统都有支持.理论上iOS来自MacOS,而MacOS其实是一种兼容的Unix系统,所以这些库应该也 ...

  2. Java进阶知识点7:不要只会写synchronized - JDK十大并发编程组件总结

    一.背景 提到Java中的并发编程,首先想到的便是使用synchronized代码块,保证代码块在并发环境下有序执行,从而避免冲突.如果涉及多线程间通信,可以再在synchronized代码块中使用w ...

  3. HDU - 6333:Harvest of Apples (组合数前缀和&莫队)

    There are n n apples on a tree, numbered from 1 1 to n n . Count the number of ways to pick at most ...

  4. C# 浅拷贝与深拷贝(复制)

    在有些时候,我们需要从数据库读取数据填充对象或从硬盘读取文件填充对象,但是这样做相对耗时.这时候我们就想到了对象的拷贝.本文即以实例形式解析了C#浅拷贝和深拷贝的用法. C#中有两种类型变量,一种 是 ...

  5. 十一、python沉淀之路--map函数、filter函数、reduce函数、匿名函数、内置函数

    一.map函数 1.自定义函数,实现类似于map函数的功能 num_l = [1,3,4,5,6,9] def power(n): return n ** 2 def map_test(func,ar ...

  6. k8s api server ha 连接配置问题

    常见的lb 负载有硬件的f5 big-ip  ,同时对于互联网公司大家常用的是nginx  haproxy 了解k8s 集群高可用的都知道 api server  是无状态的(etcd 解决了),但是 ...

  7. Yii 一些小的问题

    是否验证 ======================= $model->save()执行时,如何不要验证? 我用的是表单模型,表单模型已经验证了,保存时不想用表模型验证,如何不让表模型验证.也 ...

  8. 开源的UML建模工具

    StarUML 一个开源的UML建模工具 地址:http://staruml.sourceforge.net/en/ 效果图: 出处:http://www.cnblogs.com/zzy0471/ar ...

  9. ubuntu14.04安装pyspider

    sudo apt-get install libcurl4-openssl-dev libxml2-dev libxslt1-dev sudo atp-get install phantomjs 激活 ...

  10. Manager Test and DAO

    1. 阅读ManagerTest代码 (1)代码 import java.util.* package test; /** * This program demonstrates inheritanc ...