存储过程多问题

时间:2015-01-28 05:44:39

标签: php mysql stored-procedures

我有以下表格:

  • image_sources
  • character_trait_annotations
  • character_traits
  • 字符

(以及与此问题无关的表格)。我正在尝试使用在ImageURL中查找image_sources的存储过程,其中AnnotationID等于从代码中随机获取的AnnotatonIDcharacter_trait_annotations属于CharacterID表,其中还有CharacterTraitIDCharacterIDcharacters位于CharacterName表格中,CharacterTraitID位于character_traitsCharacterTraitName位于$character,其中$trait位于CharacterName

代码是使用CharacterTraitNameImageURL(分别为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} }

我甚至尝试用反引号括起列名和表名,它告诉我同样的事情。这有什么问题?

1 个答案:

答案 0 :(得分:0)

我明白了; / * by"我",我的意思是我的一个朋友* /

好的,那你做了什么?

我无法访问phpMyAdmin,MySQLConnect或其他任何数据库编辑器,所以我不得不尝试制作我自己的一个:http://dinotator.biokdd.org/ResearchProject/tableViewer.php。现在,唯一有效的是用于选择表格的下拉菜单。

直到今天我才能访问这个,当我问我的朋友,并且他要求查看数据库的方法时,我给了他那个。他指出的问题(我应该看到)是子查询中的第二个条件:CharacterTraitName = (SELECT CharacterTraitID FROM character_traits WHERE CharacterTraitName = traitName)所犯的愚蠢错误是试图检查CharacterTraitNameCharacterTraitID之间的平等。此外,CharacterTraitName中没有character_trait_annotations列。

回声'我感到愚蠢。&#39 ;;