後我使用PHP和MySQL創建一個簡單的基於文本的RPG和正在運行到一個奇怪的錯誤,當試圖利用一個AFTER INSERT觸發器。MySQL的PHP遊戲插入觸發誤差
之後我插入一個新的動物到動物表我想使用觸發器來還插入新記錄到存儲表與戰利品有關的信息我添加的生物。具體來說,當我在生物中插入一條記錄時,我希望它將'gloot'放到商店表中。
規範生物表:
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`)
)
代碼存儲表:
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
)
最後,這裏是觸發代碼
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;
$$
所以,我要說的是,如果gloot不是空的,那麼將其插入到存儲表中。
觸發加罰款,但之後我插入到生物表時引發的錯誤是一個奇怪的一個。我得到:
MySQL表示:#1054 - 未知列「A€OEA€
以及物品是否完整,這裏是我使用的INSERT語句:
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'
)
唷這是很多。謝謝你的時間!
嘗試用**''替換引號'''和'''。** –
'IF(New.gloot!=「」)'看起來很可疑,應該是'「」' – DevZer0
也可以是字符集問題。確保一切,無處不在任何地方都設置爲UTF-8(或任何你喜歡的字符集)。容易忘記默認字符集中的一個小元素,並將所有內容擰緊。 – Ariane