2014-06-26 92 views
2

我正在使用phpmyadmin和我有一個觸發器插入一些表後執行,在該觸發器中,我打電話一個PHP文件。但我需要從觸發器傳遞一個值到PHP文件..是否有可能?如果是這樣,建議我一些如何傳遞它的代碼(值是插入到表中的新值)Help Me.Thanks!是否可以通過Mysql觸發器將值傳遞給php?

+1

沒有。插入查詢不能「返回」任何數據,因此作爲該插入的一部分執行的任何觸發器都不能「返回」任何內容。 –

+0

@Marc B數據值類似於'new.a',其中'a'是表 – user3496195

+0

中的列名,是的,但只能在觸發器內使用。 「insert」不可能返回數據,就像它是「select」查詢一樣。 –

回答

1

我用phpmyadmin的專家,但讓我們說你打電話給你的PHP文件與觸發像這樣:

dosomething.php 

你可以通過$_GET變量,像這樣:

dosomething.php?username=john 

,那麼你可以在dosomething.php中訪問這個變量是這樣的:

$username = $_GET['username']; 

如果你w ould

echo $ username;

它將返回john

0

觸發器不能返回數據,但它可以改變的新插入或更新記錄的值(如果它是一個BEFORE觸發),並且可以改變其他表也是如此。

因此,您可以創建一個日誌表,在觸發器中寫入一些數據(以某種方式將它們鏈接到新插入的記錄),然後在單獨的查詢中從PHP讀取該數據。

0

是的,這可能是 - 使用會話變量與禁用自動提交。

的mysql:

CREATE TABLE `vtest` (
    `id` INTEGER(11) NOT NULL AUTO_INCREMENT, 
    `x` VARCHAR(20) COLLATE utf8_general_ci DEFAULT '' 
) ; 

CREATE TRIGGER `trg_vtest_before_ins` BEFORE INSERT ON `vtest` 
    FOR EACH ROW 
BEGIN 
    set @x=new.x; 
END; 

PHP:

$this->db->query("replace into vtest values(1,2)"); 
    if ($res = $this->db->query ("select @x as x")) { 
     while ($obj = $res->fetch_object()) { 
       print_r($obj); 
     } 
     $res->close(); 
    } 
    $this->db->commit(); 
相關問題