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

説明

$wpdb->get_row() は、SELECT文を実行し、1行分の結果を取得するメソッドです。

基本構文

$wpdb->get_row( string $query = null, string $output = OBJECT, int $y = 0 ): array|object|null|void

引数

  • $query:SQL文
  • $output:返却形式
  • $y:何行目を返すか(0始まり)

戻り値

1行分のデータ。該当なしなら null。

使い方(サンプル)

global $wpdb;
$row = $wpdb->get_row(
	$wpdb->prepare( "SELECT * FROM {$wpdb->posts} WHERE ID = %d", 123 )
);

注意点

  • 値は prepare() でプレースホルダーに渡します。
  • 該当なしの場合に備え、null の判定をします。

実務での使いどころ

  • 1行だけの結果を、取得するとき(IDを指定した、1件の取得など)。

よくあるミスと対処

  • 変数を、直接SQLに入れている。$wpdb->prepare() を使う。
  • 見つからないときは null。確認せずに、プロパティへアクセスする。
  • 複数行を取得したいのに、使っている。2行目以降は、取得されない。

NG例

$row = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}logs WHERE id = $id" );
echo $row->message; // 変数を直接入れ、見つからない場合も確認していない

OK例

$row = $wpdb->get_row(
	$wpdb->prepare( "SELECT * FROM {$wpdb->prefix}logs WHERE id = %d", $id )
);
if ( $row ) {
	echo esc_html( $row->message );
}

使い分け早見表

メソッド 取得するもの
$wpdb->get_row() 1行
$wpdb->get_results() 複数行
$wpdb->get_var() 1つの値

関連項目

$wpdb->get_results()、$wpdb->get_var()

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

コメント

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