web-dev-qa-db-ja.com

から複数のmeta_valueを選択 WP DB;単一クエリ

Usermetaテーブルから各ユーザーの姓名、電話番号、電子メールアドレス、および住所を取得しようとしています。単一のSQLクエリを使用して、それぞれが独自のmeta_keyを持つ複数のmeta_valuesを選択するのに問題があります。

データが以下のように返されるようにします。

姓、名、電話、アドレス、Eメール姓、名、電話、アドレス、Eメール名、姓、電話、アドレス、Eメール姓、姓、電話、アドレス、Eメール

私はphpMyAdminを介して実際のDBにアクセスできるので、mySqlクエリの助けを借りたいです。

キーを指定せずにget_user_metaを呼び出すだけで、ユーザーのすべてのMetaValuesが返されます。

$userdata = get_user_meta( $userID );

arrayに返されるので、Metavalueの表示タイトルのマッピングを行う必要があるかもしれません。ここでkeysはあなたのmetakeysのデータベース値です。

たとえば、

$userdata['f711_email_first_name']

テーブルにこれらすべての要素を表示したい場合は、次のようにarrayを作成します。

$displaytitles = array(
    'f711_email_first_name' => 'Email first name',
    ...
);

$userdataをループ処理すると、次のように出力されます。

foreach ( $userdata as $thisdata => $value ) {
    echo $displaytitles[$thisdata] . ': ' . $value[0];
}
3
fischi

もし私があなたの靴の中にいたら、 get_user_meta() を使います。

// get the users -- I'm ordering them by their username
$args = array( 
    'orderby' => 'login',
    'order' => 'ASC',
);
$users = get_users( $args );
foreach( $users as $user ) {
    $user_meta = get_user_meta( $user->ID );
    var_dump( $user_meta ); // to show you what you've got
}

これはとても単純な例です。実生活では、おそらくget_user_meta()が返す配列をループして、var_dump()よりもはるかにきれいに表示したいでしょう。

参考文献

1
Pat J