thinkPHP5實現數據庫添加內容的法子

更新:2017-10-27    編輯:懷絲    來源:GeGuai.com    人氣:加載中...    字號:|

本文實例講述了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',

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


評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)

站點導航

您可能在找這些
四川快乐12电视软件 极速赛车是哪里的彩票 极速赛车靠谱吗 股票权重怎么看 北京麻将下载安装 go6h·com现场直播开奖 腾讯分分彩是腾讯的吗 有什么网赚项目 腾讯分分彩单期网页计划 管家婆期期准免费资料 小说 福建体彩36选7模拟机选