利用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. MFC多语言程序版本,在不同的windows系统上的使用 FP_SetThreadUILanguage

    from: http://www.cnblogs.com/qijicxl/p/3840157.html 如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 ...

  2. python学习之多线程(一)

    引入线程包或者命名空间import threading 一:建立一个简单的线程程序 import time, threading def test():    print('thread %s is ...

  3. POJ1251 Jungle Roads

    解题思路:看懂题意是关键,Kruskal算法,最小生成树模板. 上代码: #include<cstdio> #include<cstring> #include<algo ...

  4. MySQL FEDERATED 存储引擎的使用

    FEDERATED 存储引擎描述 FEDERATED存储引擎能让你访问远程的MySQL数据库而不使用replication或cluster技术(类似于Oracle的dblink),使用FEDERATE ...

  5. 在javascript中使用提示信息来熟悉当前的程序流程

    最近,因为需要,开始了解javascript,这个对我来说是个新的东西,在分析现有程序的功能的时候,需要增加一些提示信息来帮助了解程序的处理流程.于是在网上了解了一下提示信息的使用和区别.在此整理一下 ...

  6. 神奇的TextField(2)

    var text_content:TextField=new TextField(); text_content.autoSize="left"; // text_content. ...

  7. Activiti工作流学习之流程图应用详解

    Activiti工作流学习之流程图应用详解 1.目的  了解Activiti工作流是怎样应用流程图的. 2.环境准备2.1.相关软件及版本    jdk版本:Jdk1.7及以上 IDE:eclipse ...

  8. spring的笔记1 关云长

    1.1   实例化方式 l  3种bean实例化方式:默认构造.静态工厂.实例工厂 1.1.1  默认构造 <bean id="" class=""> ...

  9. 初识ADO.NET

    摘要 作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角色.本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET的主要组成部分 ...

  10. 编程实现从hadoop上下载

    下载 package hadoopTest; import java.io.File; import java.io.IOException; import org.apache.hadoop.con ...