MENU

check_column()

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_namestringテーブル名(例:wp_posts
$col_namestring検証対象のカラム名
$col_typestring期待するカラム型(例:varchar(255)
$is_nullboolnull`
$keymixedキー情報(例:PRI, UNI, MUL
$default_valuemixedデフォルト値
$extramixedカラムの追加設定(例:auto_increment
スクロールできます
戻り値説明
truebool指定されたテーブルにカラムが存在する場合に返されます。
falseboolカラムが存在しない場合に返されます。

使用例

タグを使った使用例

global $wpdb;

if ( check_column(
    $wpdb->prefix . 'my_table',
    'status',
    'varchar(20)',
    false,
    'PRI',
    'active',
    null
) ) {
    echo 'status 列は正しく定義されています';
} else {
    echo 'status 列が未定義または不一致です';
}

wp_my_tablestatus カラムが存在し、型・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) vs varchar(255)

条件が合っているはずなのに false が返る

MySQLの DESC が返す型文字列とあなたの $col_type が微妙に異なる可能性あり。

解決方法

  • DESC テーブル名 を手動で確認し、返される文字列に合わせる
  • null 可否などの引数を null にして必要最小限だけ比較する

Q&A

テーブルが存在しない場合は?

false が返ります。まず wpdb->get_var("SHOW TABLES LIKE ...") などでテーブル存在を確認してください。

文字コードやコレーションはチェックできますか?

check_column() はそれらをチェックしません。必要ならSQLで別途確認してください。

アップグレード処理に使えますか?

はい。check_column() で事前チェックを行い、条件が不一致なら maybe_add_column()ALTER TABLE を使って構造を修正する流れが一般的です。

まとめ

check_column() は、WordPressのテーブル・カラム構造が仕様通りかどうかを確認するための便利な関数です。

特にプラグインのインストールやアップグレード時に、データベース構造の整合性を保証するための前処理として活用できます。カスタムテーブルを扱う際には非常に有用なツールの一つです。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次