PHP + SQL-запрос: выбор значений перечисления - PullRequest
0 голосов
/ 22 сентября 2011

Я сталкиваюсь со странной ситуацией с выполнением 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' интерпретируется как столбец и вызывает ошибку?

1 Ответ

5 голосов
/ 22 сентября 2011

Может быть, это потому, что вы пропускаете кавычки вокруг переменных.Попробуйте:

"SELECT COLUMN_TYPE
 FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = '$table' 
   AND COLUMN_NAME = '$column'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...