Php 具有自定义表的Wordpress数据库
我试图从导入wordpress数据库的表中提取数据 我的php代码适用于所有默认的wp_uu表,但当我尝试针对我真正想要的表时,我得到了所有bug 我的代码目前回显了所有帖子的标题,而且它可以正常工作Php 具有自定义表的Wordpress数据库,php,database,wordpress,Php,Database,Wordpress,我试图从导入wordpress数据库的表中提取数据 我的php代码适用于所有默认的wp_uu表,但当我尝试针对我真正想要的表时,我得到了所有bug 我的代码目前回显了所有帖子的标题,而且它可以正常工作 $liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_status = 'publish'") ); foreach ($liveposts as $li
$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数据库中提取数据,因此我遗漏了一些明显的信息。尽量不要在表名中使用变量:
$liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_bus_route
WHERE post_status = 'publish'") );
引用表名,如$wpdb->posts,仅适用于标准WP表。对于自定义表,按如下方式生成表名:
$liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "tablename WHERE post_status = 'publish'") );
永远,永远,永远不要硬编码前缀。这可以在wp-config.php中进行更改,许多人会将其更改为wp\u以外的内容。将其从wp_u更改是一种很好的安全措施。即使是你自己的代码和网站,$wpdb->prefix是一个值得养成习惯的最佳实践。很酷,这就成功了谢谢:你有没有想过为什么$wpdb->不起作用?$wpdb->bus_routes和wp_bus_routes之间有什么区别?这是因为wordpress在wp includes/wp-db.php中描述了$tables内置变量,其中描述了AllowWeb表名称数组“posts”、“comments”、“links”、“options”、“postETA”、“terms”、“term_taxonomy”、“term_relationships”、“commentmeta”;如果你添加到这个数组中,bus_routes会起作用,但是在wordpress更新到新版本后,所有的更改都会丢失,所以请使用静态表名,而不是variablesok,谢谢你的帮助。现在在我脑海里有了意义:干杯,伙计们