在从表中选择该列之前,如何检查列是否存在

时间:2016-05-24 14:06:26

标签: mysql if-statement select

以下是我用来从其中一个表中选择多个列的查询。 我从用户那里获得了列名,以便从表中进行选择。 如果用户提供错误的列名称,则会显示“未知列”错误。在进行选择之前,如何检查表中是否存在该列?

SELECT `address_id`,`address_firstname`,` afserfw` 
FROM `patsm_addresstable` 
WHERE `address_id`='28'
LIMIT 0, 25 

这会产生以下错误:

#1054 - Unknown column ' afserfw' in 'field list' 

1 个答案:

答案 0 :(得分:1)

此查询将为您提供特定表中列及其数据类型的列。

SELECT COLUMN_NAME, DATA_TYPE
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_SCHEMA = DATABASE()
   AND TABLE_NAME = 'tablename'

在构建针对任何表的查询时,您可以使用此结果集来确定给定列是否存在。

但要小心:允许最终用户为您提供列名的Web应用程序很难确保其不会被网络犯罪者侵入。