thinkPHP5实现数据库添加内容的方法


Posted in PHP onOctober 25, 2017

本文实例讲述了thinkPHP5实现数据库添加内容的方法。分享给大家供大家参考,具体如下:

面对一个新框架安装好了一般不知道要干啥。那就先做一个写入功能先。

先做好准备工作先,首先要连接上数据库。

配置文件在application下的database.php里

return [
  // 数据库类型
  'type'      => 'mysql',
  // 服务器地址
  'hostname'    => '127.0.0.1',
  // 数据库名
  'database'    => 'shoptest',
  // 用户名
  'username'    => 'root',
  // 密码
  'password'    => '',
  // 端口
  'hostport'    => '3306',
  // 连接dsn
  'dsn'       => '',
  // 数据库连接参数
  'params'     => [],
  // 数据库编码默认采用utf8
  'charset'     => 'utf8',
  // 数据库表前缀
  'prefix'     => '',
  // 数据库调试模式
  'debug'      => true,
  // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
  'deploy'     => 0,
  // 数据库读写是否分离 主从式有效
  'rw_separate'   => false,
  // 读写分离后 主服务器数量
  'master_num'   => 1,
  // 指定从服务器序号
  'slave_no'    => '',
  // 是否严格检查字段是否存在
  'fields_strict'  => true,
  // 数据集返回类型
  'resultset_type' => 'array',
  // 自动写入时间戳字段
  'auto_timestamp' => false,
  // 时间字段取出后的默认时间格式
  'datetime_format' => 'Y-m-d H:i:s',
  // 是否需要进行SQL性能分析
  'sql_explain'   => false,
];

设置好之后先放着,先建立一个控制器

默认下载的集合中,application文件夹里有一个index的文件夹。

里面是用来存放控制器,类和模板的文件夹,名字可以修改。

如果用过3.2的就很好理解了,就是相当于原来的home文件。

在这个文件夹里先创建三个文件夹

thinkPHP5实现数据库添加内容的方法

然后再controller文件夹里新建一个index.php的文件(其实默认就有一个)。

在class类里写入这样的代码

public function indexs()
{
    return '我打开控制器了';
}

在网址栏输入 服务器名/index/index/indexs

可以看见一行文字。

加下来先引入模板。

先添加use think\View;引入模板库。

$view = new View;
return $view->fetch('模板名');

那么模板放在哪里。controller文件夹有一个view文件夹

如果你直接把模板文件拖进去的话会报错。

thinkPHP5实现数据库添加内容的方法

看报错路径的后半部分。/application/index\view\index\adda.html

application/index/view这个都能找到

接下来又是一个文件夹的名字和文件名字。

这个文件夹对应着的是控制器的名字,也就是说要建立一个对应的文件夹。再把模板拖进去即可调用。当然,一个完整的框架不会只有这一个方法。其他的细节以后在研究。

表单提交的常用的两个写法,input('post.xxx')指的是获取post值。

//调用Db类
use think\Db;
$data = ['title' => input('post.title'), 'content' => input('post.title')];
Db::table('blogmsg')->insert($data);
//建立model的写法
$mod = new \app\index\model\Blogmsg;
$mod->title = input('post.title');
$mod->content = input('post.content');
$mod->save();
echo $mod->id;

相对而言,个人比较喜欢这样的写法。使用Request来完成添加。(对以后使用laravel有好处)

//引入Request。
use think\Request;
public function add(Request $req){
  //如果添加的内容需要处理,先单独取出然后赋值进去($req->post('title')可以获取其中的值)
  $a = rtrim($req->post('title'),' ');
  $req->post(['title'=>$a]);
  //准备添加
  $mod = new \app\index\model\Blogmsg;
  //allowField可以选择只添加哪些字段。
  $mod->allowField(['title','content'])->save($req->post());
  //获取返回的主键
  echo $mod->id;
}

说道添加数据,那么肯定需要自动验证了。

这次的自动验证可以单独的写一个文件。在index文件夹内创建一个Validate文件夹,内部创建一个和Model文件夹内相同名字的php文件。方便使用。

样本

namespace app\index\validate;
use think\Validate;
class Blogmsg extends Validate
{
  //写规则
  protected $rule = [
    'title' => 'require|max:25',
    'content' => 'require|max:255',
  ];
  //写报错返回信息
  protected $message = [
    'title.require' => '必须填写',
    'title.max' => '不能超过25个字符',
    'content.require' => '必须填写',
    'content.max' => '不能超过255个字符',
  ];
  protected $scene = [
    'add' => ['title','content'],
    'edit' => ['title','content'],
  ];
}

然后控制器部分的改动

$a = $mod->validate(true)->allowField(['title','content'])->save($req->post());
if(false === $a){
  // 验证失败 输出错误信息
  dump($mod->getError());
  die;
}

最后做一个防止重复提交以及远程提交的表单令牌功能:在模板中的form表单里加入{:token()},然后再验证的规则里做一下修改,验证规则加一个token。如下:

'title' => 'require|max:25|token',

至此,文章添加部分告一段落。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php数组应用之比较两个时间的相减排序
Aug 18 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
PHP 字符串 小常识
Jun 05 PHP
解析link_mysql的php版
Jun 30 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
php微信公众号开发模式详解
Nov 28 PHP
通过源码解析Laravel的依赖注入
Jan 22 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
thinkPHP5分页功能实现方法分析
Oct 25 #PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 #PHP
php调用云片网接口发送短信的实现方法
Oct 25 #PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 #PHP
Laravel学习教程之request validation的编写
Oct 25 #PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 #PHP
Yii2.0实现生成二维码功能实例
Oct 24 #PHP
You might like
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
php基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
基于python3实现倒叙字符串
2020/02/18 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
2014年医学生毕业自我鉴定
2014/03/26 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
销售助理岗位职责
2015/02/11 职场文书
售房协议书范本
2015/08/11 职场文书
导游带团欢迎词
2015/09/30 职场文书