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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
php字符集转换
Jan 23 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
laravel入门知识点整理
Sep 15 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
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php语法检查的方法总结
2019/01/21 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
删除节点的jquery代码
2014/01/13 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
Python实现CET查分的方法
2015/03/10 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python组合无重复三位数的实例
2018/11/13 Python
python tkinter canvas使用实例
2019/11/04 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
党校培训自我鉴定范文
2014/04/10 职场文书
火箭队口号
2014/06/18 职场文书
初中学校对照检查材料
2014/08/19 职场文书
介绍信模板
2015/01/31 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
入党转正申请报告
2015/05/15 职场文书