Thinkphp數據的修改及刪除操做

1、數據修改操做

save()  實現數據修改,返回受影響的記錄條數php

具體有兩種方式實現數據修改,與添加相似(數組、AR方式)html

1.數組方式:

a)         $goods = D(「Goods」);sql

b)        $ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手機’,’goods_price’=>1200);數據庫

c)         $goods ->where(‘goods_id>50’)-> save($ar);數組

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function  Update()
     {
         //方法一:shuzu
         $model =D( "info" );
         $attr = array (
         "Code" => "p014" ,
         "Name" => "修改數據" ,
         "Sex" =>true,
         "Nation" => "n001" ,
         "Birthday" => "2000-1-1" ,
         );
         //調用save()方法來修改數據
         $model ->save( $attr );
        }

  

數據修改爲功:安全

 

2.AR方式:

a)         $goods = D(「Goods」);服務器

b)        $goods -> goods_id = 53;框架

c)         $goods -> goods_name = 「三星手機」;post

d)        $goods -> goods_price = 2000;ui

e)         $goods -> where(‘goods_price>10000’)->save();

1
2
3
4
5
//方法二:AR
$model =D( "info" );
$model ->Name= "Update" ;
$model ->Nation= "n001" ;
$model ->where( "Code='p006'" )->save();

  

數據修改爲功:

 

以上兩種方式若是可行,即要修改所有數據

以上sql語句從技術上可行,從業務上不可行(事故)

tp框架有智能考慮,以上狀況的sql語句不被容許執行。

如何執行:

①     明確告訴系統那條sql語句被update更新

②     能夠設置where進行sql語句更新操做

save()  方法返回值

0:以前沒有問題,執行先後數據沒有變化

天然數:受影響的記錄條數

false:執行失敗

 

數據修改具體實現:

經過路由給一個操做方法傳遞參數

http://網址/index.php/模塊/控制器/方法upd/變量名1/值/變量名2/值/變量名3/值

以上路由是經過get形式給指定的操做傳遞了三個參數信息

$_POST方式也能夠

原則三個參數信息接收的時候經過$_GET接收便可

例如:$_GET[‘變量名1’];  

 

以上參數信息接收太直白,不安全,須要按照框架規則使用下邊的方式接收get參數信息

http://網址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing

function upd($name,$age,$addr){

       $name;

       $age;

       $addr;

}

以上參數表述,若是在請求的時候沒有按照規則傳遞參數,那麼當前方法禁止訪問。

(除非參數有默認值)

 

修改商品信息步驟:

  1. 在「修改」按鈕處把被修改商品id信息經過get形式傳遞給upd操做
  2. 在upd方法裏邊製做形式參數$goods_id,接收服務器給傳遞的get變量goods_id
  3. 在修改表單裏邊製做隱藏域goods_id,避免tp框架禁止修改語句執行
  4. 在upd操做方法內部有兩個邏輯:展示表單、收集表單

3.自動收集表單修改(必需要會的)

MainController.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//方法三:自動修改表單
         
    $model =D( "info" );
    if ( empty ( $_POST ))
    {
    $code = "p006" ;
     $attr = $model ->find( $code );
    $this ->assign( "shuju" , $attr );
    $this ->display();
     }
    else
   {
    $model ->create();
    $model ->save(); 
    }

 視圖模板的顯示頁面,Veiw/Main/update.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<! DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html  xmlns="http://www.w3.org/1999/xhtml">
< head >
< meta  http-equiv="Content-Type" content="text/html; charset=utf-8" />
< title >無標題文檔</ title >
</ head >
 
< body >
<!--自動收集表單數據入庫操做 -->
<!--注意大小寫和數據庫中的列名一致 -->
< h2 >修改頁面</ h2 >
< form  action="__ACTION__" method="post">
< input  type="hidden" name="Code" value="<{$shuju.code}>"/>
< div >姓名:< input  type="text" name="Name" value="<{$shuju.name}>"/></ div >
< div >性別:< input  type="text" name="Sex" value="<{$shuju.sex}>"/>
</ div >
< div >民族::< input  type="text" name="Nation" value="<{$shuju.nation}>"/>  
</ div >
< div >生日:< input  type="text" name="Birthday" value="<{$shuju.birthday}>"/></ div >
< input  type="submit" value="修改" />
</ form >
</ body >
</ html >

  

        ==>       

數據庫中信息改變:

 

2、數據刪除及執行原生sql語句

delete()  返回受影響的記錄條數

$goods -> delete(30);   刪除主鍵值等於30的記錄信息

$goods -> delete(「10,12,13」);   刪除主鍵值等於10 12 13的三條記錄

$goods -> where(「goods_id>60」)->delete()   把符合條件的記錄都給刪除

1
2
3
4
5
6
7
8
9
10
11
//刪除數據
     function  Delete ()
     {
         $model =D( "info" );
         $model -> delete (); //裏面不加條件會刪除全部數據
         
         //根據主鍵值刪
         $model -> delete ( "p011" );
         //根據條件刪除
          $model ->where( "nation='n001'" )-> delete ();               
         }

  

執行原生sql語句

  1. 查詢語句query()  返回一個二維數組信息
  2. 添加、修改、刪除 execute()  返回受影響的記錄條數

$goods = D(「Goods」);

$sql = 「select * from sw_goods」;

$rst = $goods -> query($sql);

 

$sql = 「select goods_category_id,avg(goods_price) from sw_goods group by goods_category_id having  avg(goods_price)>1000」;

$goods -> query($sql);

 

$sql = 「update sw_goods set goods_name = ‘htc_two’ where goods_id=100」;

$goods -> execute($sql);

相關文章
相關標籤/搜索