显示自定义表中的数据

时间:2020-04-26 作者:Daniel Florian

只是想了解一些关于如何处理这一问题的建议:

在过去(许多月前),当我偶尔做php/mysql工作时,使用“WHERE”查询中的表头从表中提取/显示数据相对容易。(即从“表”中选择*,其中“列名”=“查询”)。这些表将为每一条信息(如电子邮件、电话、地址等)设置列。

我目前正在使用一个表进行一个项目,该表由一个插件安装到数据库中,我想在与插件无关的站点的不同区域使用其中的一些数据。

此表没有如上所述的每种类型信息的列,而是

链接到用户wordpress帐户的用户id列。此列包含地址、电话号码等条目(这些是我上面示例中的列名)

  • 一个meta\\u值列。此列保存每种类型的元密钥(实际地址、电话号码等)的数据。
  • 我想做的是获取特定用户id的每个项目的值,并预先填写提交的表单。

    因此,当他们使用WP\\u get\\u current\\u User()函数登录时,他们的用户ID、名称和电子邮件将从WP数据库的用户表中提取出来。一旦我有了用户ID,我就想在表单的另一个表中显示该用户的地址、电话号码等,但我仍停留在sql查询上

    类似于:

    global $wpdb;    
    $current_user = wp_get_current_user();
    $uid = $current_user->ID;
    
    $table = $wpdb_>prefix . \'plugin-table\';
    
    然后,我想选择用户的地址和电话号码等,并将其显示为单独的信息,因此:

    $mobile
    $address
    $studentnumber
    
    这样我就可以在需要的地方使用它们

    查询数据库以获取我要查找的信息的正确方法是什么?

    希望一切都有意义。。。

    3 个回复
    SO网友:Daniel Florian

    好吧,那么也许上面的措辞不是很好?

    此后,我取得了以下进展:

    global $wpdb;    
    $current_user = wp_get_current_user();
    $uid = $current_user->ID;
    $fname = $current_user->first_name . " " . $current_user->last_name;
    $email = $current_user->user_email;
    
    $studentTable = $wpdb->prefix.\'um_metadata\';
    
    
    $result = $wpdb->get_results ( "SELECT * FROM $studentTable WHERE `user_id` = $uid AND \'um_key\' = \'student_number\' ");
    
    foreach($result as $studentNumber){
        echo $studentNumber->um_value;
    }
    
    快速上下文:

    um\\u key column是数据类型(电话、地址等)

  • um\\u value是包含信息的列,如果我删除AND \'um_key\' = \'student_number\' 从SQL查询中,结果将显示所有具有正确user\\u id的行,但我只希望输出具有um\\u键“student\\u number”的特定行

    感谢您的帮助

  • SO网友:Daniel Florian

    因此,以下工作:

    $result = $wpdb->get_results ( "SELECT * FROM $studentTable WHERE `user_id` = $uid AND `um_key` LIKE \'student_number\' ");
    
    foreach($result as $studentNumber){
        echo $studentNumber->um_value.\'<br/>\';
    }
    
    虽然我觉得“foreach”并不是应该使用的正确语法/术语?

    SO网友:Mr_Ussi
    global $wpdb;
    
    $table_name = $wpdb->prefix . \'your_table_name\';
    
    $results = $wpdb->get_results(
    
        "SELECT * FROM $table_name"
    
    );
    
    foreach($results as $row)
    {
    
        echo $row->id;
    
    }