Wordpress数据库与自定义表

时间:2010-08-02 11:02:58

标签: php database wordpress

我正在尝试从已导入我的wordpress数据库的表中提取数据。

我的php代码适用于所有默认的wp_表,但是当我尝试并定位表时,我实际上希望我能回到bug。

我的代码(目前回复所有帖子标题并且有效)

$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_bus_route ...但仍然没有。

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

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

2 个答案:

答案 0 :(得分:6)

引用像$wpdb->posts这样的表名只适用于标准WP表。对于自定义表,请按以下方式构建表名:

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

永远不要永远不要硬编码前缀。这可以在wp-config.php中更改,很多人将其更改为wp_以外的其他内容。从wp_更改它是一个很好的安全措施。即使它是您自己的代码和您自己的网站,$wpdb->prefix也是一种值得养成习惯的最佳做法。

答案 1 :(得分:2)

尝试不在表名中使用变量:

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