テーブルのすべての列を取得したいが、名前に _images などを含むものを除外するとします。
mysql_query("SHOW COLUMNS FROM " . $table. " WHERE Field NOT IN ('project_images_1' .etc)")
これは可能ですか?
フィールドの例:
header
bodytext
project_images_1 (exclude)
project_images_2 (exclude)
はい、可能です。私はLIKE
演算子でそれを行うことができます:
SHOW COLUMNS FROM $table WHERE NOT Field LIKE '%_images%';
または、さらに制御が必要な場合は、これが役立つ場合があります。
$query = <<<SQL
SHOW COLUMNS FROM $table WHERE Field NOT IN (
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = $table
AND column_name LIKE 'project_images_%'
);
SQL;
これは、いわゆる subquery内で情報スキーマ テーブルを使用することによって機能します(おそらくそれはとにかく探しているものです) 。
関連している: