我正在尝试从已导入我的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数据库中提取数据,所以我遗漏了一些明显的东西。
答案 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'") );