这次内容是数据库的使用方法

因为在第一章讲过就是拿index这个文件写的数据库的访问,这次实验我使用文件是系统默认的首页

配置的内容也在那里有提过就不重发戳图了。

数据库按照手册上的建议建了3行的内容(使用的SQLyog来进行连接的)

现在想想在配置databas.php这个文件时候有这么一段

当时想着这个有什么意义,我想这样大概能分模块引用数据库,不至于使得结构混乱

要访问数据库,要加上

use think\Db

接下来显示进行增删改查

<?php
namespace app\index\controller; use think\Controller;
use think\Db; class Index extends Controller
{
public function index()
{
$data = Db::execute('INSERT into think_data (id, data, status) value(7, "sijidou4", 1)');
var_dump($data);
$data = Db::execute('UPDATE think_data set data = "四季豆" where id = 4');
var_dump($data);
$result = Db::query('SELECT * from think_data');
dump($result);
echo "<br/>";
$data = DB::execute('DELETE from think_data where id = 7');
$result = Db::query('SELECT * from think_data');
dump($result);
echo "hello world";
return ;
}
}

execute执行操作,如果用var_dump将结果字符串输出,会显示“int()”之类的

而query操作会使结果返回一个数组,即可以显示表里字段的内容。

这里的代码可以精简下去掉execute操作(因为该操作不需要变量,也不需要输出),代码如下

<?php
namespace app\index\controller; use think\Controller;
use think\Db; class Index extends Controller
{
public function index()
{
Db::execute('INSERT into think_data (id, data, status) value(7, "sijidou4", 1)');
Db::execute('UPDATE think_data set data = "四季豆呀" where id = 4');
$result = Db::query('SELECT * from think_data');
dump($result);
echo "<br/>";
Db::execute('DELETE from think_data where id = 7');
$result = Db::query('SELECT * from think_data');
dump($result);
echo "hello world";
return ;
}
}

学到了一句SQL命令

// 清空数据表
Db::execute('TRUNCATE table think_data');

可以用DB::connect(数据库类型//账号:密码@地址:端口/库名#编码)来重新打开新的数据库。

可以用这种方式来表示打开不同数据库,且比较方便。

$db1 = Db::connect('db1');
$db2 = Db::connect('db2');
$db1->query('select * from think_data where id = 1');
$db2->query('select * from think_data where id = 1');

用[]来实现动态绑定,保护安全

例如

Db::execute('INSERT into think_data VALUES(?, ? ,?)',[7,'aaa',1]);

Db::execule('INSERT into think_data VALUES(:id, :data, :status),['id' => 7, 'data' => 'aaa', 'status' => 1]');

thinkphp5还提供一种查询构造器,即把每一步用函数来表示,并每个步骤间用->相连

//该代码来着官方文档(本人比较喜欢上面的原生态代码)
// 插入记录
Db::table('think_data')
->insert(['id' => 18, 'name' => 'thinkphp', 'status' => 1]); // 更新记录
Db::table('think_data')
->where('id', 18)
->update(['name' => "hello"]); // 查询数据
$list = Db::table('think_data')
->field('name,email')
->where('id', 18)
->select(); // 删除数据
Db::table('think_data')
->where('id', 18)
->delete();

注意下用select()进行查询,必须把select放在最后,之前放要进行select的对象的信息。

最先提到prefix这个设置表开头前缀的在这里可以有如下作用

Db::table('think_data') 等价于Db::name('data');

内容不多,今天就到这吧。

 

初识thinkphp(4)的更多相关文章

  1. 初识thinkphp(3)

    这篇内容主要涉及请求相应内容. 该系列主要是个人笔记,且内容是连贯的,其中涉及到的自己写的模块或者方法在前面文章中有介绍咋来的,如果您看得云里雾里,给您带来不便,真的不好意思. 0x01:请求对象 官 ...

  2. 初识thinkphp(5)

    这次主要内容是模型的基本操作 0x01:什么是模型 通过手册的阅览,笼统的说就是,把打开数据库等操作在另一个php文件中进行 以及对变量的规则具体细节,查询,取值等操作进行定义,方便在控制器中直接使用 ...

  3. 初识thinkphp(2)

    thinkphp的url路径的表示格式为 http://ip/tp/public/index.php/模块/控制器/操作 这里url最后的操作就是类里面的函数. 0x01:url访问格式 官方文档中有 ...

  4. 初识thinkphp(1)

    作为一名准备成为CTF里WEB狗的萌新,在做了3个月的CTF的web题后,发现自己php代码审计非常不过关,并且web的架构模式条理也十分的不清晰,于是抱着提高代码审计能力的态度在近期会去写一个简单的 ...

  5. ThinkPHP学习笔记(一)----初识ThinkPHP

    在做微信开发的时候原本使用来yii框架,后续觉得yii虽然功能强大使用方便,但是整个框架太大了,不适合一些轻量级的开发:这个时候发现thinkphp这个框架,框架本身很小,只有几M,但麻雀虽小,但五脏 ...

  6. 使用ThinkPHP框架高速开发站点(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  7. 使用ThinkPHP框架高速发展网站(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  8. ThinkPHP Widget模块开发流程

    初识ThinkPHP的Widget,现把模块开发的流程发布如下,也方便以后自己查阅: 一.新建数据库表self_modules,sql代码如下 CREATE TABLE `self_modules` ...

  9. [转]使用ThinkPHP框架快速开发网站(多图)

    本文转自:http://blog.csdn.net/ruby97/article/details/7574851 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkP ...

随机推荐

  1. 浮动和margin-left负值的有趣现象

    我将第二个浮动的元素的margin-left的值不断减小: 被设置元素左移,后面的元素跟着动 当被设置元素的右边界超过了前面元素的左边界,后面边的元素被前面的元素挡在外面了

  2. P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下的人找到区间[l,r]储物点的所有东西,清点完 ...

  3. saltstack主机管理项目【day23】:主机管理项目需求分析-设计

    本节内容 一. 主机管理项目需求分析 二 .主机管理项目架构设计 三.主机管理项目初始构建 四. 主机管理项目编主机分发器 一. 主机管理项目需求分析 场景:我现在又一台裸机要实现一下人物 配置管理: ...

  4. Spring MVC 中 @ModelAttribute 注解的妙用

    Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...

  5. JeeSite 4.x 树形结构的表设计和用法

    有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章. 在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理 ...

  6. bzoj千题计划294:bzoj3139: [Hnoi2013]比赛

    http://www.lydsy.com/JudgeOnline/problem.php?id=3139 队伍的顺序不会影响结果 将队伍的得分情况作为状态,记忆化搜索 就是先搜索第一只队伍的得分情况, ...

  7. CF 1131B Draw!

    Draw! Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u   Descriptio ...

  8. Requests中出现大量ASYNC_NETWORK_IO等待

    七夕活动,网页显示异常:504 Gateway Time-out The server didn't respond in time.开发询问数据库是否正常,当时正连接在实例上查询数据,感觉响应确实慢 ...

  9. H - Tickets dp

    题目链接: https://cn.vjudge.net/contest/68966#problem/H AC代码; #include<iostream> #include<strin ...

  10. GDB命令

    recursiveDescription 打印view层次结构