Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有自定义表的Wordpress数据库_Php_Database_Wordpress - Fatal编程技术网

Php 具有自定义表的Wordpress数据库

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

我试图从导入wordpress数据库的表中提取数据

我的php代码适用于所有默认的wp_uu表,但当我尝试针对我真正想要的表时,我得到了所有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数据库中提取数据,因此我遗漏了一些明显的信息。

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

$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,谢谢你的帮助。现在在我脑海里有了意义:干杯,伙计们