我有以下表格:
(以及与此问题无关的表格)。我正在尝试使用在ImageURL
中查找image_sources
的存储过程,其中AnnotationID
等于从代码中随机获取的AnnotatonID
。 character_trait_annotations
属于CharacterID
表,其中还有CharacterTraitID
和CharacterID
。 characters
位于CharacterName
表格中,CharacterTraitID
位于character_traits
,CharacterTraitName
位于$character
,其中$trait
位于CharacterName
。
代码是使用CharacterTraitName
,ImageURL
(分别为CREATE PROCEDURE getImageURL(IN charName VARCHAR(35), IN traitName VARCHAR(100))
BEGIN
SELECT ImageSourceURL FROM image_sources WHERE
AnnotationID = (SELECT AnnotationID FROM character_trait_annotations WHERE CharacterID =
(SELECT CharacterID FROM characters WHERE CharacterName = charName) AND CharacterTraitName =
(SELECT CharacterTraitID FROM character_traits WHERE CharacterTraitName = traitName)
);
END;
,Unable to call stored procedure: Unknown column 'CharacterTraitName' in 'where clause'
)调用存储过程,并尝试获取{{1} } 为了它。
存储过程
该过程的SQL代码如下:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
但是,当我从PHP调用该过程时,我收到此错误:{{1}}。我能够在活动服务器上创建存储过程而无需投诉。
我在我自己的机器(数据库的版本,在phpMyAdmin中)本地检查此过程,尝试在那里创建存储过程以查看发生了什么,并且我收到此错误:{{1} }
我甚至尝试用反引号括起列名和表名,它告诉我同样的事情。这有什么问题?
答案 0 :(得分:0)
我明白了; / * by"我",我的意思是我的一个朋友* /
好的,那你做了什么?
我无法访问phpMyAdmin,MySQLConnect或其他任何数据库编辑器,所以我不得不尝试制作我自己的一个:http://dinotator.biokdd.org/ResearchProject/tableViewer.php。现在,唯一有效的是用于选择表格的下拉菜单。
直到今天我才能访问这个,当我问我的朋友,并且他要求查看数据库的方法时,我给了他那个。他指出的问题(我应该看到)是子查询中的第二个条件:CharacterTraitName =
(SELECT CharacterTraitID FROM character_traits WHERE CharacterTraitName = traitName)
所犯的愚蠢错误是试图检查CharacterTraitName
和CharacterTraitID
之间的平等。此外,CharacterTraitName
中没有character_trait_annotations
列。
回声'我感到愚蠢。&#39 ;;