通过数据库触发器推送消息?

时间:2014-05-07 10:45:19

标签: mysql curl

我正在尝试使用数据库触发器和过程发送短信我创建了表格,我可以通过以下方式插入数据:

use sms;  
INSERT INTO sms_out (id, sender,receiver,msg) 
     VALUES ('','MyName','25578200000',"test");

我创建了触发器;

use sms;  
CREATE TRIGGER push_message_trigger AFTER INSERT ON sms_out  
FOR EACH ROW  
CALL push_message(NEW.sender, NEW.receiver, NEW.msg);  

我创建了程序as;

use sms;
DELIMITER $$

CREATE PROCEDURE push_message
    (p1 TEXT,
     p2 DOUBLE,
     p3 TEXT)
BEGIN

     DECLARE cmd CHAR(255);
     DECLARE result CHAR(255);
     SET cmd = CONCAT('curl "http://www.sms.co.tz/api.php?do=sms&username=Myusername&password=MyPassword&senderid=MyName&dest=25571500000&msg=test"');
      SET result = sys_eval(cmd);

END$$;

以上不起作用,但如果我更换

SET cmd = CONCAT('curl "http://www.sms.co.tz/api.php?do=sms&username=Myusername&password=MyPassword&senderid=MyName&dest=25571500000&msg=test"');

使用

SET cmd = CONCAT('touch /var/lib/mysql/Advo');

它有效!!

卷毛怎么了?

1 个答案:

答案 0 :(得分:0)

我猜问题不是curl字面是你如何使用mysql CONCAT功能。

  • 要连接字符串,您应该执行类似的操作(如果您不使用逗号,则不是串联字符串):

    CONCAT(str1,str2,....);

  • 似乎问题是引号,试图逃避这样的双引号\"

* 如果您希望别人知道实际发生了什么,请显示错误