【问题标题】:Make a SELECT WHERE query of a custom field unique for each user ID对每个用户 ID 唯一的自定义字段进行 SELECT WHERE 查询
【发布时间】:2019-04-24 13:03:03
【问题描述】:

我正在使用 MemberMouse for Wordpress 来处理重复订阅,我需要添加一个查询 MemberMouse 信息的成员目录(MemberMouse 不提供此功能)。 MemberMouse 注册表单上大约有十几个字段是自定义字段,混合了文本和下拉菜单,外加一个复选框,让用户可以决定是否要出现在目录中。

我的 PHP 知识有限,但到目前为止,我已经编写了一个小测试项,只是为了确保我可以从 MemberMouse 自定义字段返回结果,到目前为止我有这个:

    global $wpdb;
    $args = array(
        'role'    => 'paid-member',
        'orderby' => 'user_nicename',
        'order'   => 'DSC'
    );
    $users = get_users( $args );

    echo '<ul>';
    foreach ( $users as $user ) {  

    $is_in_database = $wpdb->get_var( "SELECT value FROM mm_custom_field_data WHERE custom_field_id = '1' " );

    echo '<li>' . esc_html( $user->display_name ) . ' [' . esc_html( $user->user_email ) . ']</li>';

    echo 'Custom Field Data: '.$is_in_database.' </br></br>';

    }
    echo '</ul>';

这种工作方式,它列出了成员的姓名和电子邮件,但是我从自定义字段中提取数据时,它显示了数据库中所有用户的第一个值,而不是每个用户在该字段中的唯一值用户。如何让它分别检查每个 USER ID 并获取该用户的自定义值?

我要为每个人添加大约 8 个左右的“SELECT”查询。

谢谢你

【问题讨论】:

    标签: php wordpress select


    【解决方案1】:

    您总是通过以下方式获取相同的数据:

    $is_in_database = $wpdb->get_var( "SELECT value FROM mm_custom_field_data WHERE custom_field_id = '1' " );
    

    如果要根据显示的用户返回自定义字段数据,需要做一个SELECT按用户ID过滤。像这样的东西应该可以解决问题:

    $is_in_database = $wpdb->get_var($wpdb->prepare(
        "
            SELECT value
            FROM mm_custom_field_data
            WHERE user_id = %d
        ",
        $user->ID
    ));
    

    我不知道mm_custom_field_data的表结构,但我想包含用户ID的列是user_id。为了安全起见,您应该检查一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      相关资源
      最近更新 更多