check_column()
は、指定のテーブルにおいて特定のカラム(列)が存在し、さらに型、NULL許容、キー設定、デフォルト値、その他(EXTRA属性)が条件と一致するかを確認する関数です。
テーブル構造の整合性チェックやアップグレード処理の前検証に役立ちます。内部的には DESC テーブル名
で得られるカラム情報を比較しています。
目次
基本構文
check_column(
string $table_name,
string $col_name,
string $col_type,
bool|null $is_null = null,
mixed $key = null,
mixed $default_value = null,
mixed $extra = null
): bool
DESC テーブル名
を実行し、返されるカラム一覧の中から該当カラムを照合。条件がすべて一致すれば true
、一致しなければ false
を返します。
引き数と戻り値
スクロールできます
引数 | 型 | 説明 |
---|---|---|
$table_name | string | テーブル名(例:wp_posts ) |
$col_name | string | 検証対象のカラム名 |
$col_type | string | 期待するカラム型(例:varchar(255) ) |
$is_null | bool | null` |
$key | mixed | キー情報(例:PRI , UNI , MUL ) |
$default_value | mixed | デフォルト値 |
$extra | mixed | カラムの追加設定(例:auto_increment ) |
スクロールできます
戻り値 | 型 | 説明 |
---|---|---|
true | bool | 指定されたテーブルにカラムが存在する場合に返されます。 |
false | bool | カラムが存在しない場合に返されます。 |
使用例
タグを使った使用例
global $wpdb;
if ( check_column(
$wpdb->prefix . 'my_table',
'status',
'varchar(20)',
false,
'PRI',
'active',
null
) ) {
echo 'status 列は正しく定義されています';
} else {
echo 'status 列が未定義または不一致です';
}
wp_my_table
に status
カラムが存在し、型・NULL・キー・デフォルトが想定通りならば true
を返します。
注意点
- テーブル名はプレフィックス付き(例:
$wpdb->prefix
)で指定すること。 - カラム属性は完全一致で比較されるため、小文字・大文字やスペースの違いに注意。
- デフォルトでは、NULLやキーなどチェックしない項目は
null
を渡すことでスキップできます。
良く一緒に使われる関数
wpdb::get_results()
テーブルのカラム情報を取得するために使用。
maybe_add_column()
存在しない場合にカラムを自動で追加するための補助関数。
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
maybe_add_column( $table_name, 'new_col', "ALTER TABLE $table_name ADD new_col INT NOT NULL DEFAULT 0;" );
ALTER TABLE ... ADD COLUMN
maybe_add_column()
内部で利用されるSQL文として活用。
$wpdb->query( "ALTER TABLE $table_name ADD new_col varchar(255) NOT NULL" );
想定されるトラブル
カラムが存在しないと判定される
異なるテーブル名やプレフィックスを渡している。
解決方法
$wpdb->prefix
を使って正しいテーブル名を指定- 型やNULL許容など、引数の記述に誤りがないか確認(例:
VARCHAR(255)
vsvarchar(255)
)
条件が合っているはずなのに false
が返る
MySQLの DESC
が返す型文字列とあなたの $col_type
が微妙に異なる可能性あり。
解決方法
DESC テーブル名
を手動で確認し、返される文字列に合わせる- null 可否などの引数を
null
にして必要最小限だけ比較する
Q&A
まとめ
check_column()
は、WordPressのテーブル・カラム構造が仕様通りかどうかを確認するための便利な関数です。
特にプラグインのインストールやアップグレード時に、データベース構造の整合性を保証するための前処理として活用できます。カスタムテーブルを扱う際には非常に有用なツールの一つです。
コメント