grandstream blog

【WordPress】$wpdbでデータを挿入(insert)する方法!【データベース、MySQL】

こんにちは、grandstreamです。

今回は、WordPressの$wpdbオブジェクト変数を使って、MySQL上のデータベースに値を挿入する手順 をシンプルに解説します。

コードはコピペして使っちゃってください。

やりたいこと

今回は、WordPress上でtodoリストシステムを作ると仮定します。

イメージは次のような感じ。

  • ワードプレスの固定ページでpage-todo.phpを作成。
  • page-todo.php内で、todoの入力フォームを作る。
  • 入力したデータをPOSTで別の処理用のphpファイルに飛ばす。
  • 処理用phpファイル内で、$wpdbを使って、MySQLデータベースに値を追加。

MySQL上のtodoリストのテーブルは次のような感じです。(データ挿入後の画像)

なお、このテーブル自体は、phpMyAdmin上で作成しました。

$wpdbでMySQLにデータをinsertする手順

ではさっそく、$wpdbでMySQLにデータを挿入する手順を見ていきたいと思います。

なお今回は、/wp-content/themes/テーマ名/process.php

という感じで、テーマ直下(index.phpとかがある階層)に「process.php」というデータ処理専用のファイルを作ってデータのやり取りをやっていきたいと思います。

1.wp_load.phpをインクルードする

さて、process.phpでいきなり$wpdbというWordPress関数を使おうとしても使えないので、あらかじめ「wp_load.php」というファイルを読み込んでおかないといけません

したがって、process.phpの先頭部分に、以下の記述を書いておきましょう。

ちなみに、「dirname(__FILE__)」ってなんだ?と思った方のために補足です。

これはファイルの階層を取得するのに使える記述で、例えば「process.php」内で「require_once( dirname(__FILE__). ‘/hoge.php’);」と記述すると、「process.php」と同じ階層にある「hoge.php」というファイルを取得できます。

今回、「wp_load.php」(wp-contentと同階層にある)は「process.php」からみて3階層上に上がらないと行けないので、dirnameを更に3回重ねて使用しているわけです。

詳しくは以下のサイトが参考になります。

[PHP] dirname(__FILE__)で上の階層のパスを指定する方法

2.$wpdbでMySQLにデータをinsertする

あとは、以下のような記述で、MySQL上のテーブルに追加したい項目のデータを挿入するだけです。

では、もう少し詳しくコードを見ていきます。

global $wpdbを宣言する

最初に、これから$wpdbを使いますよーと宣言します。

テーブルを指定

次に、データを挿入したいテーブルを変数に入れておきます。”todo”の部分には、テーブル名を記述してください。

$wpdbを使用してデータを挿入

insertの第1引数には先程指定した$tablenameを設定します。

第2引数のarrayには、‘カラム名’ => ‘挿入したい値’として、データを設定します。

第3引数のarrayは、第2引数のarrayに1対1で対応していて、「%s:文字列、%d:整数、%f:浮動小数点数」のいずれかを指定します。

例えば、下記の例でいうと第2引数のarray内の1番目の「’supporter_id’」には整数が入るので、第3引数のarray内の1番目に「’%d’」と指定しているわけです。以下も同様です。

なお、挿入するデータには変数($val)を設定していますが、最初は手入力で数値や文字列を入れてみて、ホントにテーブルにデータが入るか試してみるといいですね。

まとめ

というわけで今回は、$wpdbでデータを挿入(insert)する方法を簡単にまとめてみました。

お役に立てれば幸いです。

ではまた…!

コメントはお気軽にどうぞ