wordpressを利用する際、WPでカプセル化されたデータベース操作クラス(wp-db.php)を直接利用したい場合は、コード内にwp-blog-header.phpを組み込むことで利用できます。
define(‘PATH’, dirname(dirname(__FILE__)).‘/’); require_once(PATH . ‘../wp-blog-header.php’); global $wpdb;
データを挿入する場合、wp-dbクラスのinsert()関数を使用する方法があります。
$table = "test_table"; $data_array = array( ‘column_1′ => ‘data1′, ‘column_2′ => ‘data2′ ); $wpdb->insert($table,$data_array);
最初のパラメータはデータベース テーブル内の名前で、2 番目のパラメータは挿入されるデータ (配列) です。配列内のキーの名前は、テーブル内の列名です。実際、insert() 関数には 3 番目のパラメータ形式もあります。興味のある方は、wp-db.php のメソッド定義を確認してください。たとえば、update() 関数を使用できます。データベースからデータを更新する データを取得するには多くの方法がありますが、そのうちの 1 つは次のとおりです:
$table = "test_table"; $data_array = array( ‘column_1′ => ‘new_data1′ ); $where_clause = array(
クエリ PHP 構文
‘column_2′ => ‘data2′ ); $wpdb->update($table,$data_array,$where_clause);
クエリのパラメータは任意の mysql ステートメントです。戻り値は、選択されて影響を受けた行の数です。エラーが発生した場合は FALSE を返します。
変数を選択します
$querystr = "SELECT column_1 FROM test_table"; $results = $wpdb->get_results($querystr); $i=0; while ($i< count($results)){ echo $results[$i]->column_1."<br />"; $i++; }
<strong><?php $wpdb->query("DELETE FROM $wpdb->post WHERE post_id = ’13′ “); ?> </strong>
この SQL は値を 1 つだけ選択します。デフォルト値は 0 行、0 列で、これはユーザーの数が選択されることを意味します。なぜここで常に prepare が前に追加されるのかは不明です。
行を選択
<strong><?php $wpdb->get_var('query',column_offset,row_offset); ?> </strong>
queryは実行されるmysqlステートメントであり、output_typeは戻り値がオブジェクト、ハッシュ、または配列であることを示し、row_offsetはどの行であるかを示します。
デフォルトでは、output_type は object です。
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10");
echo $mylink->link_id // Output_type=ARRAY_Aの場合は「10」を出力します。次に:<?php $user_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users;"));?>
get_col('query',column_offset); >
通常は
<strong><?php $wpdb->get_row('query', output_type, row_offset); ?> </strong>
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A); echo $mylink['link_id']; // prints "10"
//$wpdb->get_results('query', output_type); <?php $fivesdrafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'draft' AND post_author = 5"); foreach ($fivesdrafts as $fivesdraft) { echo $fivesdraft->post_title; }
前述したように、各 mysql ステートメントが prepare に含まれる理由は明確ではありません。以下に説明します。mysql ステートメントには一重引用符や二重引用符などの文字が含まれる場合があるため、処理されないと、 mysql に直接送信されるため、エラーが発生する可能性があります。そこで、ここでは、prepare を使用して mysql ステートメントを前処理します。 prepare の構文は次のとおりです:
<strong>//<?php $wpdb->insert( $table, $data, $format ); ?> <?php $wpdb->insert('table', array('column1' => 'value1', 'column2' => 123 ), array('%s','%d') ) ?></strong>
基本的にはそれだけです。一般的なデータベースの処理には問題ありません。問題が発生した場合は、この記事の冒頭で説明した記事で確認してください。
//$wpdb->update( $table, $data, $where, $format = null, $where_format = null ); <?php $wpdb->update( 'table', array( 'column1' => 'value1', 'column2' => 'value2' ), array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) ) ?>