嗯.thinkphp02

來源:互聯網
上載者:User

昨天沒弄好的插入資料,今天經過仔細查看文檔發現.

當執行個體化一個Model的時候,參數使用的應該是表名,不是model的名字的.因為,我的Model叫做UserModel,而資料庫表叫做users.設定了tableName屬性的.所以當執行個體化時,應該使用$Dao
= M('Users');

好吧.這裡我有明白了一點東西.這裡貌似沒有需要自己建立實體類,因為在model中沒有任何與資料庫表有關的屬性.裡面,需要定義的貌似木有什麼東西.

 

模板放在tpl下與模組相同的名字目錄下.一般html結尾.

這模板檔案訪問的url這麼奇怪麼.是說什麼http://xxxx.com/html/MyApp/index.php/模組名/模板名

我嘗試了下貌似不好使,不知道哪裡錯了的.

好的,我又弄幾下,出來了,沒有加上那個可惡的html

http://localhost/demo/index.php/index/form,好吧.為毛呢.

 

插入資料...執行個體化一個model,插入資料ok了.

自動擷取表單資訊

自動驗證

這個令牌貌似有問題. 關掉了事.詳見http://qq8810829.blog.163.com/blog/static/1152670302010818115522687/

 

ThinkPHP 查詢資料

ThinkPHP 查詢資料主要提供以下幾類查詢:

  1. select:普通查詢,同
    findAll() 方法
  2. find:取得符合查詢條件的一條記錄
  3. getBy動態查詢:根據某個欄位取得符合查詢條件的一條記錄
  4. getField:擷取某個欄位的值或多個欄位的索引數組
  5. 區間查詢:取得符合查詢條件的區間記錄
  6. 統計查詢:取得符合查詢條件的統計資料
  7. 定位查詢:取得符合查詢條件的一條或多條記錄
  8. 原生SQL查詢:支援以原生
    SQL 進行查詢或執行操作

不曉得為毛,前面的資料庫都是亂碼的...很奇怪的是,在WAMP中的mysql控制台中看到的字元集都是gbk的,在phpMyadmin中看到的是utf8
呢.但是重建立資料庫後就木有顯示亂碼了.

 

查詢,

select()查詢,

 

where('條件')

$map['欄位名']  = array('運算式', '操作條件');

其中 $map 是一個普通的陣列變數,可以根據自己需求而命名。上述格式中的運算式實際是運算子的意義:

詳見http://www.5idev.com/p-thinkphp_expressions.shtml

條件有三種使用方法的

$List = $Dao->where('uid<10 AND
email="Jack@163.com"')->find();  
//字串形式
$condition['uid'] = array('elt',10);
$condition['email'] = "Jack@163.com";
$List =
$Dao->where($condition)->find();                          
//數組形式,推薦

$condition = new stdClass();
$condition->uid = array('elt',10);
$condition->email = "Jack@163.com";
$List =
$Dao->where($condition)->find();                          
//對象形式

 

 

order('欄位' 降序/升序)

limit('開始id,查詢個數')

 

find()只查詢一條資料

getByXxx()動態查詢(一個魔術方法....),getBy欄位名,getByUsername('條件')

getField('欄位','條件','分隔字元'),獨立的方法,不需要select或find

用於擷取某個欄位的值或者多個欄位的索引數組

區間查詢,使用where的條件時,使用的條件有規則

$condition['uid'] =
array(array('gt',1),array('lt',5));      
大於1,小於5.預設and
$condition['uid'] = array(array('gt',3),array('lt',10),
'or');  大於3或者小於10
$condition['username'] = array(array('like','%a%'),
array('like','%b%'), 'Admin','or');
一些統計函數


  1. count():統計資料行數
  2. max():統計某個欄位最大資料
  3. min():統計某個欄位最小資料
  4. avg():統計某個欄位平均資料
  5. sum():統計某個欄位資料之和

$Dao->count();也可以添加查詢的

定位查詢,但是需要進階模型,model繼承自 AdvModel,或者使用方法switchModel("Adv")

$list =
$Dao->switchModel('Adv')->where('uid
> 0')->order('uid
ASC')->getN(2);或者
class UserModel extends AdvModel{}

  1. getN():取得查詢結果中的某個位置的記錄
  2. first():取得合格第一條記錄
  3. last():取得合格最後一條記錄

原生sql支援

  1. query():用於
    SQL 查詢操作,並返回符合查詢條件的資料集,可顯示的list
  2. execute():更新和寫入資料的
    SQL 操作,返回影響的記錄數

生 SQL 查詢需要在查詢語句中寫上對應的表名,如果表名有改動的時候,就需要逐行去更改 SQL
語句中的表名字,這樣不免麻煩。ThinkPHP 提供了一個小技巧來協助解決這個問題。

在 SQL 陳述式中,以 __TABLE__ 來替代真實的表名,而在執行個體化模型時,仍以表名為參數,如:

$list = $Dao->query("select __TABLE__ from user
where uid<5");

儲存資料save()

    //
需要更新的資料
   
$data['email'] = 'Jack@163.com';
    //
更新的條件
   
$condition['username'] = 'Jack';
    $result =
$Dao->where($condition)->save($data);

   
//或者:$result=
$Dao->where($condition)->data($data)->save();

為了保證資料庫的安全,避免出錯更新整個資料表,如果沒有任何更新條件,資料對象本身也不包含主鍵欄位的話,save方法不會更新任何資料庫的記錄。

因此要使用 save() 方法更新資料,必須指定更新條件或者更新的資料中包含主鍵欄位

如果需要更新的資料裡麵包含主鍵,那麼 ThinkPHP 會自動把主鍵的值作為條件來更新,uid為主鍵

    $data['email'] = 'Jack@163.com';
    $data['uid']
= 2;
    $result =
$Dao->save($data);
和下面的一樣的效果的
   //
需要更新的資料
   $data['email'] = 'Jack@163.com';
    //
更新的條件
   
$condition['uid'] = 2;
    $result =
$Dao->where($condition)->save($data);
更新欄位setField(fields, value, condition='')
$result = $Dao->where('uid =
2')->setField('email','Jack@163.com');
$result = $Dao->where('uid =
28')->setField(array('username','email'),array('Jack','Jack@163.com'));//多欄位

ThinkPHP 內建了對統計資料(數字欄位)的更新方法:對數字欄位修改

  1. setInc():將數字欄位值增加 
    $result = $Dao->setInc('score','uid=2',3);
  2. setDec():將數字欄位值減少 
    $result = $Dao->setDec('score','uid=2',3);

setDec() 方法中最後一個參數為數字欄位減少的值,如果省略則預設減少 1 。

setInc() 與 setDec() 方法均支援連貫操作,從而可以構造更加複雜的更新條件。

 

刪除資料delete()

$result = $Dao->where('uid =
5')->delete();
連貫操作....很多的方法,dododdo,詳見http://www.5idev.com/p-thinkphp_continuous_methods.shtml

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.