PHP + SQL查询:选择枚举值

时间:2011-09-21 22:07:43

标签: php mysql enums

我遇到了一个奇怪的情况,PHP执行了一个SQL查询,也许有人可以对此有所了解:

我的查询中写道:

"SELECT COLUMN_TYPE 
 FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = $table 
 AND COLUMN_NAME = $column"

查询应该在执行时返回一个字符串:enum('A','B'[,'C'...])(就像从命令行运行查询时一样。$table$column被传递给进行查询的函数,在我的测试用例中是正确的 - 分别作为表和列存在。在这种情况下,让我们设置$table = 'profile'$column = 'gender',上面的SQL语句将返回以下错误:

Unknown column 'profile' in 'where clause' in /registry/mysqldb.class.php on line 31

第31行是一个缓存函数,用于在查询失败前缓存查询,或在查询失败时触发错误。在其他所有情况下都可以正常工作。在发出请求时,我已连接到正确的数据库。

我的问题是:为什么'个人资料'被解释为一个列并导致错误?

1 个答案:

答案 0 :(得分:5)

也许是因为你缺少变量的引号。尝试:

"SELECT COLUMN_TYPE
 FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = '$table' 
   AND COLUMN_NAME = '$column'"