Home >Backend Development >PHP Tutorial >thinkPHP5 implements the method of adding content to database

thinkPHP5 implements the method of adding content to database

不言
不言Original
2018-06-07 14:44:483087browse

This article mainly introduces the method of adding content to the database in thinkPHP5. It analyzes the configuration, model, controller use and data insertion related operation skills of thinkPHP5 database in detail in the form of examples. Friends in need can refer to the following

The example in this article describes how thinkPHP5 implements adding content to the database. I share it with you for your reference. The details are as follows:

When a new framework is installed, I usually don’t know what to do. Then make a write function first.

Make preparations first, first connect to the database.

The configuration file is in database.php under application

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,
];

After setting it up, leave it alone and create a controller first

In the default downloaded collection, there is an index folder in the application folder.

It is a folder used to store controllers, classes and templates, and the name can be modified.

If you have used 3.2, it will be easy to understand, it is equivalent to the original home file.

First create three folders in this folder

#Then create a new index.php file in the controller folder (actually there is one by default one).

Write code like this in the class class

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

Enter the server name/index/index/indexs in the URL bar

You can see a line of text.

Add it and introduce the template first.

First add use think\View; and introduce the template library.

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

So where to put the template. The controller folder has a view folder

If you drag the template file directly into it, an error will be reported.

Look at the second half of the error path. /application/index\view\index\adda.html

application/index/view can be found

Then there is another folder name and file name.

This folder corresponds to the name of the controller, which means a corresponding folder must be created. Then drag the template in to call it. Of course, a complete framework will not only have this method. Other details will be studied later.

Two commonly used ways of writing form submissions, input('post.xxx') refers to getting the post value.

//调用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;

Relatively speaking, I personally prefer this way of writing. Use Request to complete the addition. (It will be good for using laravel in the future)

//引入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;
}

When it comes to adding data, automatic verification is definitely needed.

This time the automatic verification can be written in a separate file. Create a Validate folder in the index folder, and create a php file with the same name as the Model folder inside. easy to use.

Sample

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'],
  ];
}

Then changes to the controller part

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

Finally, create a form token function to prevent repeated submissions and remote submissions: add {:token()} to the form form in the template, then make modifications to the verification rules, and add a token to the verification rules. As follows:

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

At this point, the addition of the article comes to an end.

The above is the entire content of this article. Thank you everyone for reading. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

thinkphp3.2.3 version database addition, deletion, modification and query implementation code

##PHP implements sending and receiving JSON ask

The above is the detailed content of thinkPHP5 implements the method of adding content to database. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn