$wpdb->get_var() の使い方|説明・引数・注意点

説明

$wpdb->get_var() は、SELECT文を実行し、1つの値だけを取得するメソッドです。

基本構文

$wpdb->get_var( string $query = null, int $x = 0, int $y = 0 ): string|null

引数

  • $query:SQL文
  • $x:何列目か
  • $y:何行目か

戻り値

値の文字列。該当なしなら null。

使い方(サンプル)

global $wpdb;
$title = $wpdb->get_var(
	$wpdb->prepare( "SELECT post_title FROM {$wpdb->posts} WHERE ID = %d", 123 )
);

注意点

  • COUNT(*) など、1つの値を取得するクエリに向いています。
  • 戻り値は文字列なので、数値として使うなら型変換が必要です。

実務での使いどころ

  • 1つの値(件数、最大値、1つの列の値)だけを、取得するとき。
  • COUNT(*) の結果を、取得するとき。

よくあるミスと対処

  • 変数を、直接SQLに入れている。$wpdb->prepare() を使う。
  • 値が、文字列で返る。数値として比べるときは、(int) などで、変換する。
  • 見つからないときは null。0 や空文字と、区別して扱わない。

NG例

$count = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author = $author_id" );
if ( 5 === $count ) { // 文字列 '5' が返り、一致しない
	// ...
}

OK例

$count = (int) $wpdb->get_var(
	$wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author = %d", $author_id )
);

使い分け早見表

メソッド 取得するもの
$wpdb->get_var() 1つの値
$wpdb->get_row() 1行
$wpdb->get_col() 1列(値の配列)

関連項目

$wpdb->get_row()、$wpdb->get_results()、$wpdb->prepare()

公式リファレンス:wpdb::get_var() | Class method | WordPress Developer Resources

コメント

タイトルとURLをコピーしました