Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php执行MySQL触发器时遇到问题_Php_Mysql - Fatal编程技术网

从php执行MySQL触发器时遇到问题

从php执行MySQL触发器时遇到问题,php,mysql,Php,Mysql,由于某些原因,我无法让这个触发器在PHP中运行,即使它在phpMyAdmin中工作 CREATE TRIGGER `check_title` BEFORE INSERT ON `customer` FOR EACH ROW BEGIN IF NEW.title NOT IN ('Mr','Miss','Ms','Dr','Mrs')THEN SET @msg := 'Constraint check_title violated'; SIGNAL sqlstate '45000' S

由于某些原因,我无法让这个触发器在PHP中运行,即使它在phpMyAdmin中工作

CREATE TRIGGER `check_title` BEFORE INSERT ON `customer` 
FOR EACH ROW 
BEGIN
IF NEW.title NOT IN     ('Mr','Miss','Ms','Dr','Mrs')THEN
SET @msg := 'Constraint check_title violated';
SIGNAL sqlstate '45000' SET message_text = @msg;
END IF
END
我尝试过使用DELIMTER$$命令,并尝试通过过程方法和面向对象方法运行它

任何帮助都将不胜感激

请尝试下面的代码

DELIMITER $$

DROP TRIGGER IF EXISTS testing.check_title$$
USE `testing`$$


CREATE TRIGGER `check_title` BEFORE INSERT ON `customer` FOR EACH ROW
    IF NEW.title NOT IN  ('Mr','Miss','Ms','Dr','Mrs') THEN
        SIGNAL sqlstate '45000' SET message_text = 'Constraint check_title violated';
    END IF
$$
DELIMITER ;
你没有终止;结束后如果 您根本不需要@msg变量,尤其是用户会话变量 也就是说你的扳机看起来

创建触发器“检查标题” 在插入“客户”之前 每行 开始 如果NEW.title不在'Mr','Miss','Ms','Dr','Mrs'中,那么 信号sqlstate'45000'设置消息_text='Constraint check_title invalized'; 如果结束; 终止 这是演示

现在,从php执行它时,您不需要更改分隔符,因为它是mysql客户机命令,而不是SQL语句

您没有提到您实际使用的扩展名mysqli_*、PDO、hope not deprecatedmysql_*是什么,下面是您的php代码在mysqli中的样子_*


在尝试添加触发器时,如果您收到任何错误消息,您会收到什么错误消息?您是否尝试过通过MySQL命令客户端而不是通过phpMyAdmin添加触发器?我收到了这个错误:1064-您的SQL语法有错误;在第5行附近,查看与MySQL服务器版本相对应的手册,以了解要使用的正确语法。我以前通过在触发器前后更改分隔符使其工作,虽然我知道这不适用于phpThank you,但我花了很多时间试图使其工作。我使用了PDO,并成功地修改了我的代码,使其能够使用PDO工作。