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

説明

$wpdb->delete() は、テーブルから行を削除するメソッドです。

基本構文

$wpdb->delete( string $table, array $where, array|string $where_format = null ): int|false

引数

  • $table:テーブル名
  • $where:条件
  • $where_format:条件の書式

戻り値

削除した行数。失敗時は false。

使い方(サンプル)

global $wpdb;
$wpdb->delete( $wpdb->prefix . 'my_table', array( 'id' => 1 ), array( '%d' ) );

注意点

  • 削除は元に戻せません。実行前にバックアップを取ります。

実務での使いどころ

  • 独自のテーブルの、行を削除するとき。
  • 条件($where)に合う行を、削除するとき。

よくあるミスと対処

  • $where が、空や広すぎる条件で、多くの行が、削除される。
  • 戻り値の 0 を、失敗と考える。0 は、削除された行が、なかったことを示す。失敗は、false。
  • 削除は、元に戻せない。実行前に、バックアップを取る。

NG例

$wpdb->delete( $wpdb->prefix . 'logs', array( 'user_id' => $user_id ) ); // 権限の確認がなく、$user_id が空だと、意図しない行が消える

OK例

if ( current_user_can( 'manage_options' ) && $user_id > 0 ) {
	$wpdb->delete( $wpdb->prefix . 'logs', array( 'user_id' => $user_id ), array( '%d' ) );
}

使い分け早見表

やりたいこと 使うもの
1行を削除 $wpdb->delete()
1行を追加 $wpdb->insert()
1行を更新 $wpdb->update()

関連項目

$wpdb->insert()、$wpdb->update()

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

コメント

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