Undefined variable: row?

时间:2014-03-03 作者:David H

我正在尝试选择post_title 从…起wp_posts 使用此方法执行的查询:

     global $wpdb;
     $test = $wpdb->get_var( 
        $wpdb->prepare(" SELECT post_title FROM {$wpdb->wp_posts}" )
     );
     echo "$test";
编辑:现在我可以:

Notice: Undefined property: wpdb::$wp_posts in /../../../../wp-includes/wp-db.php on line 566

Warning: Missing argument 2 for wpdb::prepare(), called in /../../../../wp-content/themes/pms72/page-home.php on line 73 and defined in /../../../../wp-includes/wp-db.php on line 992

2 个回复
最合适的回答,由SO网友:Otto 整理而成

首先,它不是$wpdb->wp_posts, 只是$wpdb->posts.

其次,您错误地使用了prepare()。当需要将一些变量数据安全地插入到查询字符串中时,可以使用prepare,而不是其他方式。对已知字符串使用prepare不会执行任何操作并引发警告。

例如:

$data = \'example string\'
$query = $wpdb->prepare("SELECT post_title FROM {$wpdb->posts} where post_title = %s", $data);
然后,$query将是可以安全发送到$wpdb->query的SQL字符串。字符串将被转义、引用并插入到%s所在的位置。

如果没有任何需要准备好插入查询的变量数据,那么调用prepare就没有意义了。

对于您的情况,因为您没有将任何变量放入SQL,所以只需跳过prepare。

$test = $wpdb->get_var( "SELECT post_title FROM {$wpdb->posts}" );

SO网友:Douglas Radburn

你应该能够得到posts 表名称使用。

$tableName = $wpdb->prefix . \'posts\';
因此,您的脚本将变成:

global $wpdb;
$tableName = $wpdb->prefix . \'posts\';
$test = $wpdb->get_var( 
   $wpdb->prepare(" SELECT post_title FROM {$tableName}" )
);
var_dump($test);

结束

相关推荐

Cannot override hooks.php

我为网络黑猩猩的“反应主题”构建了一个儿童主题。我想换一个钩子。所以我想我需要钩子。我的孩子主题中的php文件。所以我从父母那里复制了它。我制定了相同的层次结构(我想这是正确的方法)。wp-content/[my_child_theme]/core/includes/hooks.php 将文件复制到主题根目录没有帮助。我还试图重新创建这个关键钩子。我把代码放在子函数中。php文件,但它也不起作用,因为挂钩发生在主题内容之后(只是我的asumtion)。所以问题很简单:如何覆盖父主题的挂钩。php