PHPを使ってMySQLと接続してデータベースを使えるようにします。
今回ここでは正常に接続できるかのみを確認します。
接続のPHPコードは以下の通りです。
//mysql_connectでMySQLに接続 function shortcode_MySQLConnect(){ global $wpdb; $db_user = $wpdb->dbuser; //データベース接続ユーザーの取得 $db_passwd = $wpdb->dbpassword; //データベース接続用パスワードの取得 $db_host = $wpdb->dbhost; //データベースホストの取得 $db_dbname = $wpdb->dbname; //データベース名の取得 $link = mysqli_connect($db_host, $db_user, $db_passwd, $db_dbname); if (!$link) { return '接続失敗です。'.mysqli_error(); } // データ処理 mysqli_close($link); return '接続成功です '; } add_shortcode('call_MySQLConnect', 'shortcode_MySQLConnect');
その前に!
mysqli と mysql
PHPのバージョンで mysqli と mysql ・・・i 付きか付きじゃないか決まります。
PHPのバージョンの人(ver4,5)は mysql を(PHP5.5以降では非推奨)
PHPのバージョンの人(ver5,7)は mysqli を(PHP5以降の人はこちらを)
もし、古いバージョンを使っている人がそのまま学習したい時は気を付けてください。
WordPress MySQL と接続コードの解説
ショートコードの作成方法は前の記事で「始めてのPHPコード実行」で学習しているのでもし不明なら参考にしてください。
MySQLと接続するPHPコードの説明です。
MySQLへの接続情報を取得する
global $wpdb;
$db_user = $wpdb->dbuser; //データベース接続ユーザーの取得
$db_passwd = $wpdb->dbpassword; //データベース接続用パスワードの取得
$db_host = $wpdb->dbhost; //データベースホストの取得
$db_dbname = $wpdb->dbname; //データベース名の取得
wpdbと言うクラスから接続情報を入手しています。
データベースを作成する際に事前に設定する項目ですのでその時に覚えておいても良いですし、設定ファイル wp-config.php で確認しても良いのですが、上の方法が便利です。
まずはMySQLに接続に接続
$link = mysqli_connect('localhost', 'username', 'password', 'dbname');
これは、mysql_connect()と言うMySQLと接続してくれる関数に必要な引数(接続情報)を与えて、MySQLに接続を依頼します。
接続に成功した場合は リンクIDを、失敗した場合にFALSE を返してきます。
引数:host
MySQLサーバーを指定します。
レンタルサーバの場合、MySQLを同じサーバーに立てたり他のサーバーに立てたり、レンタルサーバ会社の自由なので、予めMySQL データベースを作った時に接続サーバーの情報も表示されるはずなので確認しておきましょう。
レンタルサーバのデータベース情報を確認すれば出てきます。
上の方法で良いと思いますが、もしどうしても知りたい場合は、レンタルサーバのWordPressの入れたディレクトリにwp-config.phpと言う名のファイルが有るのでそこでも確認できます。
上の画像の /** MySQL のホスト名 (ほとんどの場合変更する必要はありません。) */ の下の行の define(‘DB_HOST’, ‘*************’);が host 名になります。
引数:username
MySQL の接続可能なユーザー名
これもレンタルサーバでデータベースを作成する際に入力したものを覚えておきましょう。上の wp-config.php ファイルで確認しても良いです。
引数:password
MySQL のユーザー名に設定したパスワード
これもレンタルサーバでデータベースを作成する際に入力したものを覚えておきましょう。上の wp-config.php ファイルで確認しても良いです。
引数:dabname
MySQL に作成したデータベースの名前
これもレンタルサーバでデータベースを作成する際に入力したものを覚えておきましょう。上の wp-config.php ファイルで確認しても良いです。
mysqli_connect(‘localhost’, ‘username’, ‘password’, ‘dbname’) 関数でMySQLに接続するとMySQLからリンク IDと言うデータが返ってきます。PHPプログラムとMySQLが接続されてその識別コードがリンク ID になります。その識別コードのリンク ID を $link と言う変数に格納して、MySQLへのアクセス時に利用します。
次に接続できたか確認
if (!$link) { return '接続失敗です。'.mysqli_error(); }
この処理は、ちゃんと接続されたかの判定を行います。正常に接続できなかった場合はメッセージを出力して終了します。
$link(リンクID)には、接続に成功した場合は リンクIDを、失敗した場合にFALSE が格納されているので。if 構文を使って判定しています。この場合、False が入っている時にエラーメッセージを返したいのでif (!$link) としています。「!」が必要ですよ。
良くPHPのプログラムのページで、接続失敗時にdie()関数を使用しています。die()関数は、「メッセージを出力し、現在のスクリプトを終了する」とマニュアルには出ています。WordPressに組み込む際は、その後の処理も考えられるので、私の場合はreturnでエラーメッセージを返しています。実際にはもっと丁寧にエラーメッセージを書く必要があると思いますが、学習用なので問題ないと思います。
接続に成功したら
接続に成功したら、データベースにアクセスして必要な情報を取得して、表示する処理を行います。
今回は接続までの確認ですので、
// データ処理 mysqli_close($link); return '接続成功です';
で終わりにしています。
WordPress ショートコード呼び出して接続実行
接続成功です上のようにWordPressの中には call_MySQLConnect とショートコード呼び出しを書いていますが、表示はどのようになっているでしょうか?「接続成功です」と表示されていると良いのですが。
あっ!ショートコードよ呼び出し……になってる。修正は面倒なので直さずに^^;
ピンバック: mysqli の 手続き型 と オブジェクト型 | WordPressでブログ