WordPressプラグイン開発/ORDER BYでIDを指定して特定のデーターを取り出す

動画URL→ https://youtu.be/LCe5IN21s_g

// 任意のIDからクライアント情報を取得
        if(isset( $_POST['client_id'] )){
            $query_id = $_POST['client_id'];
        }
        // IDが指定されない場合は最後のクライアントIDを指定
        else{
            // 処理
        }
        $query = $wpdb->prepare("SELECT * FROM {$table_name} ORDER BY `id` = $query_id");
        $post_row = $wpdb->get_results($query);
        foreach ($post_row as $row){
            $client_id = esc_html($row->id);
            $time = esc_html($row->time);
            $client_name = esc_html($row->name);
            $text = esc_html($row->text);
        }
        $top_client = <<<END
        <h3>■ 顧客の詳細(ID: $client_id )</h3>
        ##################################################<br />
        ##################################################<br />
        ID: $client_id<br />
        TIME: $time<br />
        NAME: $client_name<br />
        MEMO: $text<br />
        ##################################################<br />
        ##################################################<br />
        END;

このプログラムの流れ

$query_id = $_POST['client_id'];

フォームからのデーターはスーパーグローバル変数の$_POSTにて捕捉される。

ORDER BY `id` = $query_id

捕捉した顧客データーの’id’によって顧客テーブルから特定顧客情報取り出すSQL文。

$query = $wpdb->prepare("SELECT * FROM {$table_name} ORDER BY `id` = $query_id");

WordPressの場合、$wpdbというクラスに->prepareでSQLインジェクション対策を付しながらSQL文を書き、$queryという変数に入れています。

あとは、これを

$post_row = $wpdb->get_results($query);

して、$post_rowに結果を捕捉。

foreach($post_row as $row){
// 各要素を変数に入れる
}

$post_rowをforeachで食って、それぞれの要素を展開していきます。
($post_row as $row) は、$post_row(連想配列)にある要素を一つずつ$rowに受けて、
($row->id)の様にフォーム送信時にneme属性で指定した名前で取り出しています。

esc_htmlはフォームデーターのHTMLを無効化してます。