首頁 > 後端開發 > PHP問題 > php中如何呼叫儲存函數?呼叫預存程序?其中觸發器是什麼?

php中如何呼叫儲存函數?呼叫預存程序?其中觸發器是什麼?

慕斯
發布: 2023-03-10 22:48:01
原創
1816 人瀏覽過

我們學習了解這麼多關於PHP的知識,不知道你們php中如何呼叫儲存函數?呼叫預存程序?其中觸發器是什麼?是否已經完全掌握了呢,如果沒有,那就跟隨這篇文章一起繼續學習吧

相關推薦:PHP中關於is,between,in等運算符的用法是什麼?

在php中使用儲存函數或預存程序的示意圖

#//呼叫儲存函數:

$v1= $_POST["a];sv2 = $_POST["b];
$sq1 = "insert into tab1 (id, f2, f3)values ( null,nowO. fumnc1(Sv1 , $v2) )":$result= mysql_query($sql);
登入後複製

//呼叫預存程序:

$v1 = $_POST[ "usemame"];$v2=$_POST["pass"];sv3= $_POST["age"];
$sql ="callinsert_user(Sv1,$v2,$v3 ); ";llinsert_user)是一个存储过程,带3个参数,会将该3个参数数据写入<insert〉某个表中。
Sresult = mysql_queryO;
登入後複製

另一個使用預存程序傳回結果集的範例

$sql m"call Get_User_iInfo( sid )“;//Get_User_info)是一个存储过程,其中会返回某个指定id 的用户信息$result = mysql_query(ssql);
登入後複製

這裡得到的就是「結果集」了

觸發器(trigger)

#意思:

觸發器,也是一段預先定義好的程式碼〈跟預存程序和儲存函數一樣〉,並有個名字。但:它不能調用,而是,在某個表發生某個事件(增,刪,改〉的時候,會自動「觸發」而調用起來。

定義形式:

create trigger触发器名︰触发时机触发事件on表名foreach rowasbegin
//这里,才是编程的位置,也就是触发器的内部语句end3
登入後複製

說明:

1,觸發時機,只有2個: before《在....之前),after《在....之後〉 ﹔2,觸發事件,只有3個: insert, update , delete

2,觸發事件,只有3個: insert,update , delete

#3,即觸發器的意思是:在某個表上進行insert(或update,或delete)之前〈或之後〉,會去執行其中寫好的程式碼(語句);即每個表只有6個情形會可能呼叫該觸發器,

4,通常,觸發器用於在對某個表進行增刪改的操作的時候,需要同時去做另外一件事情的時候;5,在觸發器的內部,有2個關鍵字代表某種特定的意義,可以用了取得資料∶

new:

它代表目前正要執行的insert  update 的時候的「新行」資料﹔通過它,可以取得這一新行資料的任一欄位的值,形式為:

set@v1 = new.id;
登入後複製

//取得該新插入或update行的id欄位的值(前提是有該id)

set@v2 = new.age;//同上,
登入後複製

old:

它代表目前正要執行的delete的時候的「舊行」數據,透過它,可以取得這舊行資料的任一欄位的值,形式為:

set @v1 = old.id:I
登入後複製

取得該新插入或update行的id欄位的值(前提是有該id)

set @v2 = old.age;//同上;
登入後複製

#先刪除tab_int_max中的所有資料:

delete from tab_int_max1;
登入後複製

#取得tab_int中的f1字段的最大值,並存入變數@maxfselect max(f1) into @maxf1 from tab_int;

##然後,根據該得到的f1字段的最大值,作為條件,取出3個字段的值:

select f2 into @v2 from tab_int where f1 = @maxf1;
select f3 into @v3 from tab_int _ where f1 = @maxf1;#然后,将@maxf1,@v2,@v3插入到表tab_int_max1
insert into tab_int_max1 (f1,f2,f3)values( @maxf1,@v2,@v3);end;
#再建一个触发器,在表tab_int进行insert之前,将该行数据#也同时插入到一个跟其类似结果的表(tab_int_some)中
:CREATE TABLE tab_int_some (
id int(11) DEFAULT NULL,age tinyint(4) DEFAULT NULL);
create trigger copy_data before insert on tab_int for each rowbegin
set @v1 = new.f1;
#获得新行的字段f1的值;
set @v2 = new.f2;#获得新行的字段f2的值;
insert into tab_int_some(id,age)values(@v1,@v2);end;
登入後複製

推薦學習:php影片教學

以上是php中如何呼叫儲存函數?呼叫預存程序?其中觸發器是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板