save() 實現數據修改,返回受影響的記錄條數php
具體有兩種方式實現數據修改,與添加相似(數組、AR方式)html
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
);
}
|
數據修改爲功:安全
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;
}
以上參數表述,若是在請求的時候沒有按照規則傳遞參數,那麼當前方法禁止訪問。
(除非參數有默認值)
修改商品信息步驟:
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">
<
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
>
|
==>
數據庫中信息改變:
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
();
}
|
$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);