PHP + SQL查询:选择枚举值

sts*_*vik 0 php mysql enums

我正在遇到一个奇怪的情况,PHP执行SQL查询,也许有人可以透露一点:

我有一个查询说:

"SELECT COLUMN_TYPE 
 FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = $table 
 AND COLUMN_NAME = $column"
Run Code Online (Sandbox Code Playgroud)

查询应该返回一个字符串: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
Run Code Online (Sandbox Code Playgroud)

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

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

bfa*_*tto 5

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

"SELECT COLUMN_TYPE
 FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = '$table' 
   AND COLUMN_NAME = '$column'"
Run Code Online (Sandbox Code Playgroud)