2014-06-26 100 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(); 
相关问题