2011-09-21 133 views
0

我正在與一個SQL查詢的PHP執行,也許有人可以上流下了小光一個奇怪的情況: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行是一個高速緩存功能,以高速緩存查詢直到需要時,或者當查詢失敗觸發一個錯誤。這在其他情況下工作正常。請求發出時,我已連接到正確的數據庫。

我的問題是這樣的:爲什麼'profile'被解釋爲列並導致錯誤?

回答

5

也許是因爲你缺少變量周圍的引號。嘗試:

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

嘎......在切割,粘貼和撤消之間,我一定是失去了它們。我想知道爲什麼它有效,然後突然沒有。對不起,這個愚蠢的問題! – stslavik