thinkphp对mysql的CURD操作
利用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操作的更多相关文章
- MySQL 的 CURD 操作
0. 说明 CURD 操作通常是使用关系型数据库系统中的结构化查询语言(Structured Query Language,SQL)完成的 CURD 定义了用于处理数据的基本原子操作 CURD 代表创 ...
- ThinkPHP中简单的CURD操作
前言 我们通过一个简答例子来简述CURD的操作.首先看一下数据库的样子,其中id为自增行,其它是varchar 一.查询操作 首先,创建在Controller文件夹下创建一个User控制器,在该控制器 ...
- ThinkPHP CURD 操作
Thinkphp CURD操作php中实例还对象即可操作 (目录) 1.Add 1 调式程序 3 调出显示页面Trace信息 3 Dump 的含义 4 2.数据库查询 4 1.直接使用字符串进行查找 ...
- TP中CURD操作
CURD操作 CURD操作也就是模型操作数据表的基本操作.C(Create).U(Update).R(Read).D(Delete)操作就是增删改查操作. 6.1.增加操作 回想一下在mysql中增加 ...
- php对xml文件进行CURD操作
XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...
- ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )
//TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...
- 一个简单的ORM制作(CURD操作类)
SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...
- 通过jdbc完成单表的curd操作以及对JDBCUtils的封装
概述:jdbc是oracle公司制定的一套规范(一套接口),驱动是jdbc的实现类,由数据库厂商提供.所以我们可以通过一套规范实现对不同的数据库操作(多态) jdbc的作用:连接数据库,发送sql语句 ...
- Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作
1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...
随机推荐
- ng 指令的自定义、使用
1.创建和使用var app = angular.module('myApp',['ng']);app.directive('指令名称',func); 自定义指令的命名:驼峰式,有两部分构成,前缀一般 ...
- Android 命令行模拟按键
/***************************************************************************** * Android 命令行模拟按键 * 说 ...
- I.MX6 View长宽大于屏的分辨率
/******************************************************************************** * I.MX6 View长宽大于屏的 ...
- java编写创建数据库和表的程序
本文示例可见一斑了,主要是通过Java对SQL语句进行操作,和普通的增删改查的原理是一样的: import java.sql.*; public class Test { public static ...
- python学习-实现用户密码登录,输错三次锁定
作业需求: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 判断用户是否在黑名单,若在黑名单,则将用户锁定 判断用户是否存在,若不存在,提示用户不存在 若用户存在,判断登录密码是否 ...
- 文件上传smart
package com.bdqn.zhp.util; import java.text.SimpleDateFormat; import java.util.Date; import javax.se ...
- Instruments检测解决内存泄露以及进行性能测试
1.启动Xcode自带的Instruments.这里有两种方法启动. 方法一: 方法二: 2.选择Leaks选项.(该选项用来进行内存泄漏检测) 说明: Leaks:找到引发内存泄漏的起点. Time ...
- LOJ10034 图书管理
题意 图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入.为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统. 该系统需要支 ...
- vue-router linkActiveClass问题
在使用vue做移动端的时候,底部四个菜单中当前菜单需要高亮显示,但是由于路由配置的问题导致了下图中的问题: # 首页会一直常亮,不论是否有点击(路由配置如右图) 经过排查,发现问题出现在router中 ...
- 为什么 FastAdmin 的插件不全部免费?
为什么 FastAdmin 的插件不全部免费? 主要还是有以下几个原因. 支持开发者. 为了支付网站空间费和 CDN 费. 有收入后可以更好的开发 FastAdmin.