我遇到了一个奇怪的情况,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 行是一个缓存函数,用于缓存查询直到需要,或者在查询失败时触发错误。这在其他所有情况下都可以正常工作。发出请求时,我已连接到正确的数据库。
我的问题是:为什么“个人资料”被解释为一列并导致错误?
最佳答案
可能是因为您缺少变量周围的引号。尝试:
"SELECT COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$table'
AND COLUMN_NAME = '$column'"
关于PHP + SQL 查询 : Selecting Enum Values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507286/