【问题标题】:Undefined Object in WordpressWordpress 中未定义的对象
【发布时间】:2017-04-24 04:52:04
【问题描述】:

我是编程新手,并遵循几本书和 wordpress 法典中的说明。我正在尝试使用 $wpdb 对象访问自定义数据库。这是在本地完成的。我收到以下错误。

注意:未定义的属性:C:\wamp\www\wordpress\wp-includes\wp-db.php 中的 wpdb::$national_re_trends 第 68 行

也得到这个:

WordPress 数据库错误:[您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的 '' 附近使用的正确语法] 选择 * 从

这里是查询:

global $wpdb;                       
$stuff = $wpdb->get_results("SELECT * FROM $wpdb->national_re_trends" );
print_r($stuff);

这是我的数据库表:

Database table

我确信这是一些新东西,但如果有人可以提供帮助,我将不胜感激!

【问题讨论】:

标签: php mysql wordpress


【解决方案1】:

如果 dhe_ 是您的表前缀,请删除 FROM 后的 $wpdb

  global $wpdb;                       
  $stuff = $wpdb->get_results("SELECT * FROM dhe_national_re_trends" );
  print_r($stuff);

如果你想使用 $wpdb->前缀

global $wpdb;                       
  $stuff = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}national_re_trends" );
  print_r($stuff);

【讨论】:

  • 我在复制并发布到此处时错误地添加了该内容。最初拥有它就像您拥有它一样,但仍然出现错误。
  • 这就是我要找的。让我感到困惑的是,我引用的两本书没有提到这一点。非常感谢!
【解决方案2】:

没有称为national_re_trends 的“内置” WordPress 表,因此$wpdb->national_re_trends 将不存在。 (11 个内置 WP 表中的Here is a list)。

相反,您必须通过分配给它的名称来访问该表。

通常,我喜欢定义一个常量,这样它就可以获取内置的表前缀(当然,如果您在创建表时没有包含表前缀,您会想要考虑到这一点并删除下面的 $table_prefix)。

global $table_prefix;
define( 'MY_TABLE_NAME', $table_prefix . 'national_re_trends' );

然后,您的查询将如下所示:

global $wpdb;
$stuff = $wpdb->get_results( 'SELECT * FROM ' . MY_TABLE_NAME );
var_dump( $stuff );

【讨论】:

  • 非常感谢您的帮助。这非常有效。以这种方式定义它有优势吗?非常感谢!
  • 定义一个常量的好处是该常量可用于您可能编写的所有函数、类等(如果不使用global,变量将无法在函数内部使用,而常数)。使用这样的常量使代码更易于维护,因为如果您只是在编写的每个查询中键入表名,如果您需要更改表名,则必须在每个单独的查询中更改它。如果您像我建议的那样定义一个常量,您只需在一个地方更改表名 - 您定义该常量的地方。
  • 非常感谢您的宝贵时间和回答。我会执行的。
猜你喜欢
  • 2013-07-08
  • 2021-12-04
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多