首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入触发器错误后的MySQL PHP游戏

插入触发器错误后的MySQL PHP游戏
EN

Stack Overflow用户
提问于 2013-07-12 01:54:11
回答 1查看 369关注 0票数 1

我正在使用PHP和MySQL创建一个简单的基于文本的RPG,并且在尝试使用AFTER触发器时遇到了一个奇怪的错误。

在我将一个新生物插入生物表后,我想使用触发器将一个新记录插入存储表中,其中包含与我添加的生物相关的战利品信息。具体来说,当我在生物中插入一个记录时,我希望它能拿出“gloot”,并把它放到存储表中。

生物表代码:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `creatures` (
      `id` int(3) NOT NULL AUTO_INCREMENT,
      `name` varchar(21) NOT NULL,
      `hpoints` mediumint(3) NOT NULL,
      `maxhp` mediumint(3) NOT NULL,
      `attack` mediumint(3) NOT NULL,
      `defense` mediumint(3) NOT NULL,
      `experience` int(3) NOT NULL,
      `level` mediumint(3) NOT NULL,
      `gloot` varchar(100) NOT NULL,
      `gold` mediumint(3) NOT NULL,
      `isloot` mediumint(3) NOT NULL,
      PRIMARY KEY (`id`)
    )

存储表代码:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `store` (
  `name` varchar(50) NOT NULL,
  `stats` varchar(30) DEFAULT NULL,
  `statadd` smallint(3) DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  `amount` smallint(5) DEFAULT NULL,
  `randid` int(9) NOT NULL,
  `type` varchar(30) DEFAULT NULL,
  `location` varchar(100) DEFAULT NULL
) 

最后,下面是触发代码

代码语言:javascript
复制
DELIMITER $$
DROP TRIGGER IF EXISTS itemToStore
CREATE TRIGGER itemToStore
AFTER INSERT ON `creatures`
FOR EACH ROW BEGIN
IF (New.gloot != “”) THEN
INSERT INTO  `store`  (`name`, `statadd`, `price`, `amount`, `randid`)
VALUES('New.gloot', '0', '0',’0’, ROUND( 100000000 * RAND( ) ));
END IF;
END;
$$

所以,我要说的是,如果血块不是空的,那就把它插入到存储表中。

触发器被添加得很好,但是当我插入but表后引发的错误是一个奇怪的错误。我得到:

MySQL说:#1054 -不为人知的专栏“欧元œ”

为了完整起见,下面是我使用的insert语句:

代码语言:javascript
复制
INSERT INTO  `legends`.`creatures` (

`id` ,
`name` ,
`hpoints` ,
`maxhp` ,
`attack` ,
`defense` ,
`experience` ,
`level` ,
`gloot` ,
`gold` ,
`isloot`
)
VALUES (
NULL ,  'dragon',  '200',  '200',  '10',  '10',  '1',  '1',  'Dragon Bones',  '250',  '50'
)

唉,真是太多了。谢谢您抽出时间来!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 02:16:31

将引号替换为'

代码语言:javascript
复制
DELIMITER $$
DROP TRIGGER IF EXISTS itemToStore $$

CREATE TRIGGER itemToStore AFTER INSERT ON `creatures`
FOR EACH ROW BEGIN
   IF (NEW.gloot <> '') 
   THEN
      INSERT INTO  `store`  (`name`, `statadd`, `price`, `amount`, `randid`)
      VALUES (NEW.gloot, '0', '0','0', ROUND( 100000000 * RAND( ) ));
   END IF;
END;
$$

您还忘记在$$命令之后添加drop

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17606344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档