2016-05-24 11 views
0

以下は、私のテーブルから複数の列を選択するために使用したクエリです。 私はテーブルから選択するためにユーザーから列名を取得します。 ユーザーが間違った列名を指定すると、「不明な列エラー」が表示されます。選択する前にその列がテーブルに存在するかどうかを確認する方法はありますか?テーブルの列を選択する前に、列が存在するかどうかをチェックする方法

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

これは、次のエラーを与える:

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

ユーザが選択する列を定義する理由は何ですか?このクエリの目的は何ですか?または、ユーザーに – Matt

+0

の 'show columns from tablename; 'という列の選択ドロップダウンを与えると、列のリストが表示されます。クエリを送信する前に確認する必要があります(または単にクエリを実行してこのエラーを返す場合は、フィールドリストを最初に確認した後、「不明な列 'afserfw」などの手動エラーを返します)。クエリが使用したいカラムが存在するかどうかを確認します(例えば、 'if exists column afserfw then afserfw else null'は使用できません)。 – Solarflare

+0

こんにちは、ユーザがカスタムフィールドを作成できるのでユーザ定義にする必要があります。私の要件のために私はユーザーの携帯電話の番号をいくつかの通知メッセージを送信したい。ドロップダウンですべてのフィールドを表示する必要はなく、モバイルフィールドにはそれらを取得するための特定の識別情報はありません。 Thankyou – subramanian

答えて

1

このクエリは、そのデータ型を特定のテーブルにあなたの列のリストを提供します。

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

任意のテーブルに対してクエリを作成するときに、この結果セットを使用して、特定の列が存在するかどうかを判断できます。

ただし、エンドユーザーが列名を指定できるWebアプリケーションは、サイバークックによる侵入から保護することは困難です。

関連する問題