php - 存储过程多问题

标签 php mysql stored-procedures

我有以下表格:

  • 图片来源
  • character_trait_annotations
  • 性格特征
  • 人物

(以及与此问题无关的表格)。我正在尝试使用一个存储过程在 image_sources 中查找 ImageURL,其中 AnnotationID 等于从代码中随机获取的那个。 AnnotatonID 属于 character_trait_annotations 表,该表还有一个 CharacterID 和一个 CharacterTraitIDCharacterIDcharacters表中,表中有CharacterNameCharacterTraitIDcharacter_traits,它有 CharacterTraitName

代码是用$character,$trait(分别是CharacterName,CharacterTraitName调用存储过程>,分别),并尝试为其获取 ImageURL

存储过程

程序的SQL代码如下:

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;

但是,当我从 PHP 调用该过程时,出现此错误:无法调用存储过程:“where 子句”中的未知列“CharacterTraitName”。我能够在事件服务器上毫无怨言地创建存储过程。

我在我自己的机器(数据库的版本,在 phpMyAdmin 中)上本地检查此过程,尝试在那里创建存储过程以查看发生了什么,我收到此错误:# 1064 - 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 7 行的 '' 附近使用的正确语法

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

最佳答案

我想通了;/* “我”是指我的一个 friend */

好的,那你做了什么?

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

直到今天我才可以访问它,当我问我的 friend 时,他要了一种查看数据库的方法,我给了他那个。他指出(我应该已经看到)的问题是子查询中的第二个条件:CharacterTraitName = (SELECT CharacterTraitID FROM character_traits WHERE CharacterTraitName = traitName) 所犯的愚蠢错误是试图检查 CharacterTraitNameCharacterTraitID 之间的相等性。此外,CharacterTraitName 列在 character_trait_annotations 中不存在。

echo '我觉得自己很蠢。';

关于php - 存储过程多问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28185449/

相关文章:

php - 我需要显示位于另一台服务器上的另一个数据库的值

java - 是否可以使用 parallel 删除多个 delete 语句?删除语句是影响不同表的单独查询

oracle - DBMS Pl/SQL —输出什么……请解释一下?

sql - sp_MSforeachdb : only include results from databases with results

php - Yii 2 gii 在不同的目录中生成 View 文件

php - 使用 C API 自动插入 Mysql

mysql - 对 AWS RDS MySQL .static.midphase.com 的攻击类似于 IPv4 地址本身

php - 根据周、日选择 optgroup 匹配

php - 循环矩阵值

javascript - 表单中的多个页面