基本Tips
hoge.php
//変数の値をチェック・確認する
var_dump($results);
//改行コードの前に<br>を挿入してくれる関数
$kaigyo=nl2br($hoge);
クラスファイルを読み込んだ後にインスタンス化して利用
hoge.php
//クラスを読み込む
include(plugin_dir_path( __FILE__ )."contents.php");
//クラスをインスタンス化
$C_contents = new contents();
//実行
$C_contents->main_contents();
//--------------------------------------------------------------------
//phpファイルを読み込む
include(plugin_dir_path( __FILE__ )."class_info.php");
//登録情報クラスをインスタンス化
$regis_info = new C_info();
//登録テーブル
$h_option=$regis_info->h_option;
//参照テーブル情報取得
$get_row =$regis_info->get_row ;
//テーブル名取得
$table_name =$regis_info->table_name;
//キー項目名
$key_name=$regis_info->key_name;
class_info.php
<?php
//接続するテーブルの登録情報を"h_option"から取得するクラス
class C_info
{
//登録テーブル
public $h_option;
//参照テーブル情報取得
public $get_row;
//テーブル名取得
public $table_name;
//キー項目名
public $key_name;
//テーブル項目取得
public $query;
public $colInfo;
//テキストエリア項目の取得
public $area;
public $txt_area;
//コンストラクタ
public function __construct() {
global $wpdb;
//登録テーブル
$this->h_option=$wpdb->prefix."h_option";
//参照テーブル情報取得
$this->get_row = $wpdb->get_row("SELECT * FROM $this->h_option WHERE option_id = 1");
//テーブル名取得
$this->table_name = $wpdb->prefix.$this->get_row->table_name;
//キー項目名
$this->key_name=$this->get_row->key_name;
//テーブル項目取得
$this->query = "DESC $this->table_name";
$this->colInfo = $wpdb->get_col($this->query);
//テキストエリア項目の取得
$this->area = $this->get_row->txt_area;
$this->txt_area = explode(',', $this->area);
}
//テーブルのカラムを取得
function read_col($tb_name){
global $wpdb;
return $col_list = $wpdb->get_col("DESC $tb_name");
}
}
$wpdbに含まれるテーブル名を全部取得したい場合
hoge.php
function main_contents(){
global$wpdb;
foreach($wpdb->tables as $key=>$value){
echo'<p>['.$key.'] => '.$value.'</p>';
}
}
hoge.php
//データベースのテーブル名を取得して配列に入れる処理
$cols = array();
foreach($wpdb->tables as $key=>$value){
array_push($cols,$value);
}
テーブルのフィールド(カラム)を一覧取得する
以下の例では[shops]テーブルを指定しています
hoge.php
$query = "DESC $wpdb->shops";
$colInfo = $wpdb->get_col($query);
foreach ($colInfo as $col){
echo "<p>$col</p>";
}
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wpdb_Class#.E5.A4.96.E9.83.A8.E8.B3.87.E6.96.99
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wpdb_Class#Getting_Column_Information
//-------テーブル名を変数にするときはprefixをつける--------
$query = "DESC $wpdb->prefix$senTbNam";
$check_list = $wpdb->get_col($query);
$c_dataform->form_check($check_list);
### レコード数を取得する
xxx.php
global $wpdb;
$record_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->reviews WHERE field_name ='$atai'
その他
hoge.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();
}
Update Insert構文
hoge.php
//変更・追加処理
function save_record($wpdb,$table_name,$key_name,$colInfo) {
//レコードをセットするための配列
$set_arr = array();
//配列にループ代入
foreach ($colInfo as $col){
$set_arr[$col]= stripslashes(isset($_POST['label_'.$col])) ? stripslashes($_POST['label_'.$col]) : null;
}
//キーの値を取得
$key_data = isset($_POST['label_'.$key_name]) ? $_POST['label_'.$key_name] : null;
//該当のレコードがあるかどうか
$get_id = $wpdb->get_var(
$wpdb->prepare("SELECT * FROM
$table_name WHERE
$key_name = %d", $key_data)
);
//レコードがなかったら新規追加あったら更新
if ($get_id) {
$wpdb->update($table_name, $set_arr, array($key_name => $key_data));
return "更新しました";
} else {
$wpdb->insert($table_name, $set_arr);
return "追加しました";
}
}
//削除処理
function dalete_record($wpdb,$table_name,$key_name) {
$meta_id = isset($_POST['label_'.$key_name]) ? $_POST['label_'.$key_name] : null;
$wpdb->delete($table_name,array( $key_name => $meta_id ));
return "削除しました";
}
form関係
ボタン処理
hoge.php
//選択ボタンを押したかどうか
$senInfo=filter_input(INPUT_POST,"sentaku");
if($senInfo=="選択") {
$senFlg=1;
$senTbNam=isset($_POST['テーブルを選択してください']) ? htmlspecialchars($_POST['テーブルを選択してください']) : null;
echo $senTbNam;
}
hoge.html
<tbody>
<form method="POST" action=""></form>
<tr>
<!--プルダウンとテキストボックス-->
<td style="border-style: none;">テーブル選択:</td>
<td style="border-style: none;"><select name="テーブルを選択してください">
<option value=""></option>
<option value="posts">posts</option>
<option value="comments">comments</option>
<option value="links">links</option>
<option value="options">options</option>
<option value="postmeta">postmeta</option>
<option value="terms">terms</option>
<option value="term_taxonomy">term_taxonomy</option>
<option value="term_relationships">term_relationships</option>
<option value="termmeta">termmeta</option>
<option value="commentmeta">commentmeta</option>
<option value="shops">shops</option>
</select>
</td>
<td style="border-style: none;"><input type="submit" name="sentaku" value="選択">
</td>
</tr>
</tbody
CSVインポート
以下の例ではCSVをインポートしてデータをTable(html)で出力している。
hoge.php
function read_csvimport($filepath){
//CSVの取り込みには、「SplFileObject」を使うと便利です。(PHP5.1以上)
$file = new SplFileObject($filepath);
$file->setFlags(SplFileObject::READ_CSV);
$i = 0;
$html="";
// ファイル取得
foreach ($file as $key => $line) {
// ヘッダを読込
if ( $i === 3 ) {
$csv_heads = $line;
$csv_heads_key = array_flip($csv_heads); // ←ここがポイント!!
$head_count = count($csv_heads);
$i ++;
continue;
}
if( $i > 3 ){
$html=$html."<tr>";
$html=$html."<td>".$line[$csv_heads_key['送信者タイプ']]."</td>";
$html=$html."<td>".$line[$csv_heads_key['送信者タイプ']]."</td>";
$html=$html."<td>".$line[$csv_heads_key['送信者名']]."</td>";
$html=$html."<td>".$line[$csv_heads_key['送信日']]."</td>";
$html=$html."<td>".$line[$csv_heads_key['送信時刻']]."</td>";
$html=$html."<td>".$line[$csv_heads_key['内容']]."</td>";
$html=$html."</tr>";
}
$i++;
}
?>
<!--出力-->
<div class="wrap">
<div class="wrap">
<table class="wp-list-table widefat striped posts">
<?php echo $html; ?>
</table>
</div>
</div>
<?php
}