thinkphp學習簡易教程(二) thinkphp鏈接讀取MySQL數據庫

首先, 在本地服務器中新建項目APP,依據第一講中的步驟配置好thinkphp,這裏爲了測試方便,不分前臺和後臺模塊,統一把模塊路徑設爲'./APP/'。
一、新建數據庫myapp,以及數據庫表think_form;
二、在配置文件APP/Conf/config.php中寫入:
<?php
return array(
//'配置項'=>'配置值'
'DB_TYPE'   => 'mysql', // 數據庫類型
'DB_HOST'   => '127.0.0.1', // 服務器地址
'DB_NAME'   => 'myapp', // 數據庫名
'DB_USER'   => 'root', // 用戶名
'DB_PWD'    => '', // 密碼
'DB_PORT'   => '3306', // 端口
'DB_PREFIX' => 'think_', // 數據庫表前綴
);
?>
其中端口爲字符串須要加引號,以前把3306當作int數據類型,結果一直搞不定;
三、在控制器APP/Lib/IndexAction.class.php中寫入:
<?php
// 本類由系統自動生成,僅供測試用途
class IndexAction extends Action {
    public function index(){
$m=new Model('Form');
$arr=$m->select();
var_dump($arr[0]['title']);
    }
}
?>
注:上面的語句具體解釋爲:$m=new Model(數據庫表後綴名);後綴名首字母大小不限。注意只能是數據庫表後綴名,不能是完整的數據庫表名,不然讀取數據失敗,顯示數據爲null。也能夠採用$m=M(數據庫表後綴名);或者$m=D(數據庫表後綴名);
最後,在瀏覽器中運行 http://127.0.0.1/APP/index.php/Index/index,若是成功,便可看到數據字段的數據。
再注:以前鏈接時在入口文件內沒有加入define('APP_DEBUG', true);結果數據庫始終讀取失敗,而加了以後突然成功了,再次註釋掉也能夠讀取。難道說這一道程序是必須的?搞不懂狀況?反正thinkphp操做超蛋疼。
四、上面的操做基本能夠讀取數據庫了,但對於MVC要把控制器C和視圖V聯繫,還須要再加一道工序:
(1)在控制器APP/Lib/IndexAction.class.php中加入:
$this->assign('data',$arr[0]['title']);
$this->display();//此方法爲在視圖V中輸出顯示數據的必要條件。
(2)在APP/Tpl目錄中新建Index目錄(因爲控制器中的類名爲IndexAction ,此處必須爲Index,若是要改爲其餘目錄名,首先要把IndexAction類的Index改爲其餘字符串(首字母必須大寫),文件名改成:目標字符串(如Str)+Action.class.php,若是要創建此控制器的視圖,則要在Tpl目錄下建立目錄名爲Str的目錄,再在目錄中建立文件),再在Index目錄下新建index.html,寫入HTML語句,加入{$data}變量(由於在控制器中經過assign方法爲$data進行了定義和賦值,想分配變量可使用assign方法)。
在瀏覽器中運行 http://127.0.0.1/APP/index.php/Index/index,若是成功,便可看到數據字段的數據。
總之,thinkphp鏈接數據庫超蛋疼!!記得加入define('APP_DEBUG', true);防止麻煩出現。
 

 

附1:
url的4種訪問方式          //重點!
1.PATHINFO 模式 -- 重點!!!!!! http://域名/項目名/入口文件/模塊名/方法名/鍵1/值1/鍵2/值2
2.普通模式
http://域名/項目名/入口文件?m=模塊名&a=方法名&鍵1=值1&鍵2=值2
3.REWRITE模式
http://域名/項目名/模塊名/方法名/鍵1/值1/鍵2/值2
4.兼容模式
http://域名/項目名/入口文件?s=模塊名/方法名/鍵1/值1/鍵2/值2

http://127.0.0.1/APP/index.php/Index/index爲第一種。 
 
附2:
控制器數據庫操做CURD命令:
增 -C Create $m->add()
刪 -D Delete $m->delete()
改 -U Update $m->save()
查 -R Read   $m->select()
 
附3:
模型遍歷數組方法:
控制器的語句:public function index(){
$m=new Model('Form'); //$m=new Model(數據庫表後綴名);實例化模型
$arr=$m->select();
//var_dump($arr[0]['title']);
//$name='ken';
//$this->assign('data',$name);
$this->assign('data',$arr);
$this->display();
    }
視圖V的語句:
<h1>
   <volist name='data' id='vo'>
{$vo.id}<br>
{$vo.title}<br>
   </volist>
   </h1>
<volist>標籤是模型遍歷數組的關鍵,屬性name爲控制器中接收過來的後臺變量,id爲前臺輸出的實例對象變量。
相關文章
相關標籤/搜索