WordPressでデータベースを使う

WordPressはそもそもMySQLを利用しているシステムなので当然かもしれませんが、データベースへのアクセスに便利なクラス$wpdbが用意されています。  

投稿、または固定ページの一つ(postIDが一番ちいさいもの)を取得します。

  $wpdb は関数内で使うときは、globalで利用できるようにします。

  get_row の代わりに、get_results をつかうと複数行を取り出すことが出来ます。
というか、こっちが普通のSELECTですね。

  独自のテーブルを作成するときは、$wpdb->query を使ってCREATE文できますが、dbDelta を使ったほうがいいです。
$wpdb->prefix でWPのプレフィックスを取得できます。

ただし、dbDeltaを利用する場合、

・1行につき1つのフィールドを定義する。
・PRIMARY KEYと主キーの定義の間には二つのスペースが必要。
・INDEXという言葉ではなく、KEYという言葉を使う必要がある。

という制約があるので、これらを知らずにつかおうとすると、SQL文そのものがMySQL的にバッチリでもCREATEできなくて、ハマります。  

独自のテーブルからSELECTする場合。

 

DELETEなど、データを取得しないクエリの場合、$wpdb->query を使う。(ただし、普通に削除する場合は後述の$wpdb->deleteがあるので、そっちを使う)

 

行を追加する場合も、$wpdb->queryが使えますが、ユーザーの入力内容をSQL文に入れる場合など、SQLインジェクション攻撃対策が必要な場合は、$wpdb->prepareを使う。

 

行を追加するには、$wpdb->insertを使うと便利な上に、SQLインジェクション攻撃対策も同時になされるので安心。

 

更新も$wpdb->updateが用意されています。

 

行を削除するには、$wpdb->deleteを使います。

 

取得したデータのカラム名など調べたければ、SELECTなどのあとに $wpdb->get_col_info で調べられます。

 

SELECTするまえにカラム名を調べたければ、wpdb->get_col で取得したほうが手っ取り早い。

ちなみに、DESC は、DESCRIBE と同じ。(MySQL DESCRIBE)  

$wpdbのメソッド一覧 https://developer.wordpress.org/reference/files/wp-includes/wp-db.php/  
$wpdbの中身を見てみますと。。。

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