从wordpress数据库表中获取特定数据

时间:2013-08-29 20:48:40

标签: php database wordpress

我正在尝试使用WordPress登录的用户ID,该用户ID应搜索表transaction_user_ID中的wp_m_subscription_transaction

该表格中有一列名为transaction_user_ID,另一列名为transaction_paypal_ID

逻辑:如果用户id ==交易用户ID,则获取交易paypal id

应该与用户ID电子邮件地址一起传递给url 并执行url以获取代码 - 这是我的最终输出

如何实现这一目标?

我正在开发的代码是这样的,显然是不完整的&获取和使用数据库查询的错误

<?php $user_id = get_current_user_id();
       $query = "SELECT * FROM $wpdb->;wp_m_subscription_transaction 

       if ($user_id ==$query) {
         <a href="http://primary.copyminder.com/cm_prodkey.php?DID=********&Password=*****&ProdCode=*******&NumRequired=1&TransNum=(GET THIS FROM DATABASE) &CustEmail=". $current_user->user_email .">Get ur Code</a>
   } 
else {
echo 'You are not logged in as user ';}?>

3 个答案:

答案 0 :(得分:2)

尝试此查询。

$query = "SELECT transaction_paypal_ID FROM wp_m_subscription_transaction where transaction_user_ID = ".$user_id;

$result = $wpdb->get_row($wpdb->prepare($query), ARRAY_A);
$transaction_paypal_ID = $result['transaction_paypal_ID'];

答案 1 :(得分:2)

首先,由于您还需要电子邮件地址,因此请使用wp_get_current_user()获取所有当前用户的详细信息,而不仅仅是ID。

其次,你的查询错了;你没有关闭引号,并有一个流浪的分号。如果我读得对,你需要这样的东西:

select transaction_paypal_ID
  from wp_m_subscription_transaction
 where transaction_user_ID = [the user's ID]

如果您只在查询中获得单个值,则可以使用$wpdb->get_var()

检索该值

如果查询未返回行,则并不一定意味着用户未登录。您可以使用is_user_logged_in()检查用户是否已登录。

这样的事情应该有效。我没有测试过,你必须自己建立URL。

<?php
if (is_user_logged_in()) {
    $user = wp_get_current_user();
    $paypal_id = $wpdb->get_var("select transaction_paypal_ID from wp_m_subscription_transaction where transaction_user_ID = " . (int) $user->ID);
    if ($paypal_id) {
        // Build up your URL here, with $paypal_id and $user->user_email
    }
    else {
        echo 'No transaction found for the current user';
    }
}
else {
    echo 'You are not logged in';
}
?>

答案 2 :(得分:2)

此代码没有授权,因为您没有提供数据库结构,字段名称或许多其他因素。

但是,将其视为伪代码,这将使您朝着正确的方向前进。

$user_id = get_current_user_id();
// Global / bring in $wpdb, and the $table_prefix variables
global $wpdb, $table_prefix;
// Use $wpdb prepare to be sure the query is properly escaped
$query = $wpdb->prepare("SELECT * FROM " . $table_prefix . "m_subscription_transaction WHERE user_id = %d", $user_id);
// Turn on error reporting, so you can see if there's an issue with the query
$wpdb->show_errors();
// Execute the query
$results = $wpdb->get_results($query);
// Are there any records?  If so, that means the user ID matched
if ($results) {
    $row = $results[0];
    // Get the data from the row
    echo '<a href="http://primary.copyminder.com/cm_prodkey.php?DID=********&Password=*****&ProdCode=*******&NumRequired=1&TransNum=' . $row->TransNum . ' &CustEmail=". $current_user->user_email .">Get ur Code</a>';
} else {
    echo 'No records for this user.';
}