在小部件中使用$wpdb对象

时间:2011-02-22 作者:Honus Wagner

我试图制作一个非常简单的小部件,它可以访问与Wordpress数据库相同的数据库实例中包含的表,但不是Wordpress表。我正在使用wpdb class according to the codex. 我没有得到任何错误,但我也没有得到任何结果。

我是否正确使用了对象?还是应该为自己的表滚动自己的访问类?

以下是小部件代码:

function widget ($args,$instance) 
{
        extract($args);

        global $wpdb;

        $title = $instance[\'title\'];
        $catid = $instance[\'catid\'];

        $current_user = wp_get_current_user();

        $sql = \'SELECT max(ID) as MaxID, status FROM Clients WHERE UserID = \'.$current_user->ID;
        $clientRow = $wpdb->get_results($sql);

        $out = \'<div style="text-align: center; border: solid 1px Navy; background-color: #E4E4E4">\';
        $out .= \'<span>Client status: \'.$clientRow->status.\'</span></div>\';

        echo $before_widget;
        echo $before_title.$title.$after_title;
        echo $out;
        echo $after_widget;
}
提前谢谢。

3 个回复
最合适的回答,由SO网友:wyrfel 整理而成

如果确实只需要一行,请使用$wpdb->get_row($sql) 相反

但你的问题看起来很有趣。。。看起来您正在尝试获取用户的最新“客户端状态”,在这种情况下,您的查询应该是:
\'SELECT status FROM Clients WHERE UserID = \'.$current_user->ID.\' ORDER BY ID DESC LIMIT 1\'.

如果你这样做了,你甚至可以使用$status = $wpdb->get_var($sql);.

最后一点您是否考虑改用add\\u user\\u meta/get\\u user\\u meta?使用本机表和函数有很多好处,例如在删除用户等时会清除记录。

SO网友:Jan Fabry

$wpdb->get_results() 返回多行作为对象数组(或数组数组,具体取决于$output 参数)。你想要的是$wpdb->get_row().

SO网友:t31os

结果将以对象数组的形式返回,而不是单个对象。。

此行将结果视为对象。

$clientRow->status
事实上,当您有一个包含对象的数组时,这将引用第一个。

$clientRow[0]->status
不太确定您对结果的期望,所以希望以上信息足以帮助解决问题?

小提示,您可能不需要此。。

$current_user = wp_get_current_user();
给予$current_user 范围应该足够大。

结束

相关推荐

对$wpdb中的结果集进行分页->Get_Results()

是否有一种简单的方法可以对来自$wpdb->get\\u results()的结果集分页?我想在author\\u archive页面上获得用户评论的分页列表-社区中的一些用户的评论超过500条,因此分页很重要。WordPress有没有内置的方法来实现这一点,或者我需要自己构建它?[更新以添加代码]<!-- Show comments --> <?php $querystr = \" SELECT comment_ID, comment_post_