本文實(shí)例講述了thinkPHP5實(shí)現(xiàn)數(shù)據(jù)庫添加內(nèi)容的方法。分享給大家供大家參考,具體如下:
面對(duì)一個(gè)新框架安裝好了一般不知道要干啥。那就先做一個(gè)寫入功能先。
先做好準(zhǔn)備工作先,首先要連接上數(shù)據(jù)庫。
配置文件在application下的database.php里
return [
// 數(shù)據(jù)庫類型
'type' => 'mysql',
// 服務(wù)器地址
'hostname' => '127.0.0.1',
// 數(shù)據(jù)庫名
'database' => 'shoptest',
// 用戶名
'username' => 'root',
// 密碼
'password' => '',
// 端口
'hostport' => '3306',
// 連接dsn
'dsn' => '',
// 數(shù)據(jù)庫連接參數(shù)
'params' => [],
// 數(shù)據(jù)庫編碼默認(rèn)采用utf8
'charset' => 'utf8',
// 數(shù)據(jù)庫表前綴
'prefix' => '',
// 數(shù)據(jù)庫調(diào)試模式
'debug' => true,
// 數(shù)據(jù)庫部署方式:0 集中式(單一服務(wù)器),1 分布式(主從服務(wù)器)
'deploy' => 0,
// 數(shù)據(jù)庫讀寫是否分離 主從式有效
'rw_separate' => false,
// 讀寫分離后 主服務(wù)器數(shù)量
'master_num' => 1,
// 指定從服務(wù)器序號(hào)
'slave_no' => '',
// 是否嚴(yán)格檢查字段是否存在
'fields_strict' => true,
// 數(shù)據(jù)集返回類型
'resultset_type' => 'array',
// 自動(dòng)寫入時(shí)間戳字段
'auto_timestamp' => false,
// 時(shí)間字段取出后的默認(rèn)時(shí)間格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要進(jìn)行SQL性能分析
'sql_explain' => false,
];
設(shè)置好之后先放著,先建立一個(gè)控制器
默認(rèn)下載的集合中,application文件夾里有一個(gè)index的文件夾。
里面是用來存放控制器,類和模板的文件夾,名字可以修改。
如果用過3.2的就很好理解了,就是相當(dāng)于原來的home文件。
在這個(gè)文件夾里先創(chuàng)建三個(gè)文件夾
然后再controller文件夾里新建一個(gè)index.php的文件(其實(shí)默認(rèn)就有一個(gè))。
在class類里寫入這樣的代碼
public function indexs()
{
return '我打開控制器了';
}
在網(wǎng)址欄輸入 服務(wù)器名/index/index/indexs
可以看見一行文字。
加下來先引入模板。
先添加use think\View;引入模板庫。
$view = new View;
return $view->fetch('模板名');
那么模板放在哪里。controller文件夾有一個(gè)view文件夾
如果你直接把模板文件拖進(jìn)去的話會(huì)報(bào)錯(cuò)。
看報(bào)錯(cuò)路徑的后半部分。/application/index\view\index\adda.html
application/index/view這個(gè)都能找到
接下來又是一個(gè)文件夾的名字和文件名字。
這個(gè)文件夾對(duì)應(yīng)著的是控制器的名字,也就是說要建立一個(gè)對(duì)應(yīng)的文件夾。再把模板拖進(jìn)去即可調(diào)用。當(dāng)然,一個(gè)完整的框架不會(huì)只有這一個(gè)方法。其他的細(xì)節(jié)以后在研究。
表單提交的常用的兩個(gè)寫法,input('post.xxx')指的是獲取post值。
//調(diào)用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;
相對(duì)而言,個(gè)人比較喜歡這樣的寫法。使用Request來完成添加。(對(duì)以后使用laravel有好處)
//引入Request。
use think\Request;
public function add(Request $req){
//如果添加的內(nèi)容需要處理,先單獨(dú)取出然后賦值進(jìn)去($req->post('title')可以獲取其中的值)
$a = rtrim($req->post('title'),' ');
$req->post(['title'=>$a]);
//準(zhǔn)備添加
$mod = new \app\index\model\Blogmsg;
//allowField可以選擇只添加哪些字段。
$mod->allowField(['title','content'])->save($req->post());
//獲取返回的主鍵
echo $mod->id;
}
說道添加數(shù)據(jù),那么肯定需要自動(dòng)驗(yàn)證了。
這次的自動(dòng)驗(yàn)證可以單獨(dú)的寫一個(gè)文件。在index文件夾內(nèi)創(chuàng)建一個(gè)Validate文件夾,內(nèi)部創(chuàng)建一個(gè)和Model文件夾內(nèi)相同名字的php文件。方便使用。
樣本
namespace app\index\validate;
use think\Validate;
class Blogmsg extends Validate
{
//寫規(guī)則
protected $rule = [
'title' => 'require|max:25',
'content' => 'require|max:255',
];
//寫報(bào)錯(cuò)返回信息
protected $message = [
'title.require' => '必須填寫',
'title.max' => '不能超過25個(gè)字符',
'content.require' => '必須填寫',
'content.max' => '不能超過255個(gè)字符',
];
protected $scene = [
'add' => ['title','content'],
'edit' => ['title','content'],
];
}
然后控制器部分的改動(dòng)
$a = $mod->validate(true)->allowField(['title','content'])->save($req->post());
if(false === $a){
// 驗(yàn)證失敗 輸出錯(cuò)誤信息
dump($mod->getError());
die;
}
最后做一個(gè)防止重復(fù)提交以及遠(yuǎn)程提交的表單令牌功能:在模板中的form表單里加入{:token()},然后再驗(yàn)證的規(guī)則里做一下修改,驗(yàn)證規(guī)則加一個(gè)token。如下:
'title' => 'require|max:25|token',
至此,文章添加部分告一段落。
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- tp5.1框架數(shù)據(jù)庫子查詢操作實(shí)例分析
- tp5.1 框架數(shù)據(jù)庫常見操作詳解【添加、刪除、更新、查詢】
- tp5.1 框架數(shù)據(jù)庫高級(jí)查詢技巧實(shí)例總結(jié)
- ThinkPHP5.1框架數(shù)據(jù)庫鏈接和增刪改查操作示例
- PHP利用pdo_odbc實(shí)現(xiàn)連接數(shù)據(jù)庫示例【基于ThinkPHP5.1搭建的項(xiàng)目】
- PHP7使用ODBC連接SQL Server2008 R2數(shù)據(jù)庫示例【基于thinkPHP5.1框架】
- ThinkPHP實(shí)現(xiàn)多數(shù)據(jù)庫連接的解決方法
- thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)實(shí)例
- tp5(thinkPHP5)框架數(shù)據(jù)庫Db增刪改查常見操作總結(jié)
- tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫查詢的方法
- tp5(thinkPHP5)操作mongoDB數(shù)據(jù)庫的方法
- tp5.1 框架數(shù)據(jù)庫-數(shù)據(jù)集操作實(shí)例分析