代码之家  ›  专栏  ›  技术社区  ›  Adam Tomat

带自定义表的WordPress数据库

  •  0
  • Adam Tomat  · 技术社区  · 14 年前

    我正试图从导入到WordPress数据库的表中提取数据。

    我的PHP代码适用于所有默认的wp_u表,但是当我尝试以这些表为目标时,我真的想要把bugger全部恢复过来。

    我的代码(当前回送所有的帖子标题,它起作用)

    $liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts
     WHERE post_status = 'publish'") );
    
     foreach ($liveposts as $livepost) {
      echo '<p>' .$livepost->post_title. '</p>';
    }
    

    我从另一个数据库中导入了3个表,是的,它们确实有数据要拉出来。我发现 $wpdb->posts 期望posts表是wp_posts.。所以我尝试将我的表重命名为wp_总线路由…但还是没什么。

    我使用phpmyadmin从一个大型数据库中导出3个表(采用.sql格式),然后导入它们。我可以看到phpmyadmin中的表并查看其中的所有数据。

    这是我第一次从wp数据库中提取数据,所以我遗漏了一些明显的东西。

    2 回复  |  直到 7 年前
        1
  •  2
  •   antyrat    14 年前

    尽量不要在表名处使用变量:

    $liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_bus_route
     WHERE post_status = 'publish'") );
    
        2
  •  6
  •   Steve Taylor    12 年前

    像这样引用表名 $wpdb->posts 仅适用于标准工作压力表。对于自定义表,生成如下表名:

    $liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "tablename WHERE post_status = 'publish'") );
    

    从不,从不,从不硬编码前缀。这可以在wp-config.php中更改,许多人将其更改为 wp_ . 将其从 WPI 是一个很好的安全措施。即使是你自己的代码和网站, $wpdb->prefix 是一个值得养成习惯的最佳实践。