【问题标题】:How do I fetch a data from an external database into my wordpress home如何从外部数据库中获取数据到我的 wordpress 主页
【发布时间】:2018-03-31 12:44:11
【问题描述】:

我在主机的子文件夹中安装了一个 WordPress 站点,并且在 public_HTML 中安装了另一个旧站点。我想从旧站点到新站点(注意,两个站点有不同的数据库)获取一些数据(在我的 WordPress 主页索引上的标题周围使用的选取框文本)。我已经有一个获取数据的 php 代码。

//test.php

<?php
include_once("admin/includes/config.php");
include_once("admin/includes/db.class.php");    
$db = new DB; $db -> open();
$strScrollingText = '';
$db -> query("select * from anouncements where status = 1 
order by id desc");
if ($db -> rows() > 0)
        {
    $strScrollingText .= '<MARQUEE scrolldelay="100" 
direction="left">';
    while ($rs = $db -> rsset())
    $strScrollingText .= stripslashes($rs['anouncement']) . ', 
';
    $strScrollingText .= '</MARQUEE>';      
    }

?>

当上面的 test.php 放在我的根目录并运行时,它会从数据库中输出一个字幕文本。然后我将文件移动到我的主题文件夹中(当然,我使用 ../ 调整了 db 包含文件路径)并尝试使用 include('test.php); 包含 test.php;在我主题的 header.php 的&lt;head&gt; 中,但是当我刷新我的主页时,它是空白的。我什至将 test.php 的内容复制到 &lt;head&gt; 并删除了 'echo $strScrolling text; ' 并将其放置在希望它出现的位置,但主页仍然是空白的。我还在我的 Themes functions.php 中使用了 #include 指令,但这使我的整个 WordPress 崩溃(我不得不通过 cpanel 编辑文件以恢复我的 wp)。
我不知道哪里做错了,这真的很令人沮丧,我需要任何我能得到的帮助。如果我能使用插件完成这项工作,我将不胜感激。

【问题讨论】:

  • 你应该有一个开发环境来启用异常错误。
  • 如果您只复制了您正在显示的内容,那么它现在是完整的代码。在 php 或 wordpress 中没有 defaultclass DB,你试图用这一行 $db = new DB; $db -&gt; open(); 调用它。
  • 我猜,它们是admin/includes/config.phpadmin/includes/db.class.php 文件。你也应该复制它们
  • 我不明白?我已经在测试中添加了绝对路径 ../../../../admin/includes/config.php 和 ../../../../admin/includes/db.class.php .php 文件,所以我认为它应该链接起来

标签: php database wordpress


【解决方案1】:

您可以尝试类似以下的方法吗?创建一个新的 WPDB 实例并使用它的方法,以确保您使用的 Class 已经包含在 wordpress 中。另外我建议在您的wp-config.php 中启用WP_DEBUG 以了解导致的错误。

另外我建议您首先设置 wpdb 参数 harcoded 以避免包含来自根文件夹的文件,只是为了确保它们不会导致任何错误。如果一切正常,则尝试包含其他文件,因此您可以评估包含的文件是否导致任何问题。

$db = new wpdb( EXTERNAL_DB_USERNAME, EXTERNAL_DB_PASS, EXTERNAL_DB_NAME, EXTERNAL_DB_HOST );
$strScrollingText = '';
$sql = "select * from anouncements where status = 1 order by id desc";
$results = $db->get_results($sql);
if ( count($results) > 0 ){

    $strScrollingText .= '<MARQUEE scrolldelay="100" direction="left">';

    foreach ($results as $row){
        $strScrollingText .= stripslashes($row->anouncement) . ', ';
    }

    $strScrollingText .= '</MARQUEE>';      

}

【讨论】:

  • 谢谢,我已经用类似的代码解决了它,我试图在这里发布答案,但是当我做不到的时候我放弃了。我使用了助手 get_var() 代替,因为我只需要最新的公告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
相关资源
最近更新 更多