从远程WordPress数据库拉取数据

时间:2012-11-29 作者:Brian Keary

我正试图从远程wordpress数据库中提取一些数据。以下是我的代码:

$server = "my server code";
$user = "my username";
$password = "my password";
$db = "mydb";
$con = mysql_connect($server,$user,$password); 
if (!$con) {
    die("database connection error");

} else {

mysql_select_db($db, $con);

function dp_get_user_liked_posts($user_id, $fields = \'\') {

    global $wpdb;

    $tempDB = $wpdb;

$wpdb = new wpdb($user, $password, $db, $server);

    // Get user settings
    $settings = get_option(\'dp_post_likes\');

        $login_required = !empty($settings[\'login_required\']) ? true : false;

            if($login_required && !is_user_logged_in()) {

                echo \'<p class="must-login">\'.sprintf(__(\'You must <a href="%1$s">register</a> and <a href="%2$s">login</a> to view your liked videos.\', \'dp\'),  site_url(\'wp-login.php?action=register\', \'login\'), wp_login_url()).\'</p>\';

            } else {

    $settings = get_option(\'dp_post_likes\');
    $user = get_current_user_id();
    $user_id = 2;
    $likes=query_posts(array(
                            \'post_type\' => \'post\',
                            \'ignore_sticky_posts\' => true,
                            \'filter_type\' => \'user_liked\',
                            \'filter_user\' => $user_id
                        ));

                global $wp_query;
                 $likes= array();
                 while (have_posts()) : 
                            $likes[]=the_post() ;
                        endwhile;

}}}  
        mysql_close($con);

$wpdb = $tempDB;
但它不是显示器$likes. 你做错了什么?

1 个回复
SO网友:s_ha_dum

好啊这里几乎没有什么不对的地方。

query_posts 不意味着要这样使用,所以不要。请使用相同的代码$likes=new WP_Query(array(... 相反

$likes=new WP_Query(array(
                        \'post_type\' => \'post\',
                        \'ignore_sticky_posts\' => true,
                        \'filter_type\' => \'user_liked\',
                        \'filter_user\' => $user_id
                    ));
这是问题之一。那么即使$likes 如果设置正确,您会将其击垮。

$likes= array();
为什么您希望在$likes 删除所有数据后?不要那样做。删除该行。

现在:

while (have_posts()) : 
    $likes[]=the_post() ;
endwhile;
。。。毫无意义。运行查询后$likes 已经是一个帖子集合。跑var_dump($likes) 你就会明白我的意思了。没有必要仅仅为了完成已经完成的事情而对其进行循环。只需返回$likes 或者在上面循环并做一些事情,比如回声内容。

此外,使用the_post 这样做行不通。这不是the_posts 方法执行。

另一方面,如果您试图提取,例如,您想要的帖子内容。。。

while ($likes->have_posts()) : 
    $likes->the_post();
    $cont[] = $post->post_content;
endwhile;
我真的建议你花点时间读一下creating loops.

你也可以这样做get_posts 但是循环有点不同。

还有,为什么要混合PHPmysql_* 具有的函数$wpdb? 你为什么要用global $wpdb 只是为了打击它?为什么不为数据库实例使用不同的名称呢?

希望这会有所帮助。

结束

相关推荐

Can't match title in database

这很令人困惑,希望有人能帮助我。下面是我用来查看wp\\u posts表中是否存在标题的一些代码$mypostids = $wpdb->get_results(\"select ID from $wpdb->posts where post_title=\'$thisTitle\'\"); if(!empty($mypostids)){ echo $thisTitle.\' already exists\'; }else{ echo $t