【问题标题】:Retrieving specific data from database从数据库中检索特定数据
【发布时间】:2020-04-06 12:15:21
【问题描述】:

所以我做了两个页面:一个订阅页面和一个下载页面。用户可以在订阅页面上订阅某些内容。他们的选择将保存在数据库中。每个用户都有不同的选择。该系统运行良好。但是,我不知道如何从数据库中检索用户的选择。选择存储在数据库表wpex_usermeta 中名为meta_value 的列中。

例子:

如您所见,user_id 3 的用户选择了22nl。如何从数据库中检索用户的选择。

我的php代码:

<?php

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "Het spijt ons, er is momenteel geen connectie met de server.";
    // echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else {
     // echo "upload is gelukt";
}

global $wpdb;

$table_name = $wpdb->prefix . 'usermeta';
// This retrieves the data from the database
$retrieve_data = $wpdb->get_results( "SELECT meta_value FROM {$table_name}" );

?>
<form action="#" enctype="multipart/form-data" method="post">
    <?php wp_nonce_field( 'set_programma_action', 'set_programma' ); ?>
    <table>
        <?php foreach ( $retrieve_data as $retrieved_data ) { ?>
            <tr>
                <th>Programma:</th>
                <td style="vertical-align: middle;"><?php echo esc_html( $retrieved_data->meta_value ); ?></td>
                <th>
                    <button name="programma" type="submit" value="<?php echo esc_attr( $retrieved_data->meta_value ); ?>">Abonneer</button>
                </th>
            </tr>
        <?php } ?>
    </table>
</form>
?>
<table>
  <tr>
     <th>Programma:</th><td style="vertical-align: middle;"><?php echo "<a href='$mp3_url'>$filename</a>"; ?></td>

  </tr>
</table>

【问题讨论】:

标签: php wordpress


【解决方案1】:

您必须只选择特定的数据库行 - 您必须有 user_id:

SELECT meta_value FROM {$table_name} WHERE user_id=USER_ID_VALUE AND meta_key='programma';

【讨论】:

  • 但是程序可以是任何东西。我无法创建一个名为 programma 的单独列,因为 wordpress 不允许这样做。
  • @JohanDelft 这个答案的确切位置暗示您需要对 SQL 表结构进行更改...?
  • "programma" 只是一个例子,我认为,这个元键用于存储用户选择。
【解决方案2】:

不要直接查询user_meta 表。请改用get_user_meta()

$choice = get_user_meta(wp_get_current_user()->ID, 'programma', true);

【讨论】:

  • 我必须在哪里放置该代码。我必须用$retrieve_data = $wpdb-&gt;get_results( "SELECT meta_value FROM {$table_name}" );替换它吗?
  • 您可以将代码放置在需要为当前用户包含所选程序的值的任何位置;根据您的上述要求,我无法提供更多信息。
  • 所以我需要把它放在桌子上吗?您还使用了与我使用的完全不同的变量$retrieve_data
  • 我这样做是为了强调从get_user_meta 返回的数据将与您的$retrieve_data 具有不同的类型/结构,并且需要您的下游代码进行稍微不同的处理。
  • 但这意味着我不需要$retrieve_data,因为$choice 现在会返回数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 2013-12-09
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多