2016-11-05 37 views
0

我希望我的插件中的这个函数在返回数据时调用。我只是想在这一点上得到任何结果。它曾经是一个更具体的查询。echo mysql select语句与wpdb显示无结果

function ml_results() { 
global $wpdb; 
$results = $wpdb->get_results('SELECT * FROM wp_ml_char', OBJECT); 
echo "<p>Your character's info {$results}</p>"; 
} 

add_shortcode('ml_return', 'ml_results'); 

我没有运气返回并显示任何与任何output_type。我也试过打印而不是回声。我也在phpmyadmin中测试了我的查询,它工作得很好。我得到的所有回报是“ARRAY”。所以,$结果返回“你角色的信息ARRAY”。 Var_dump也可以正常工作,但这并不是我希望显示数据的具体方式。所以我相信问题在于WordPress的代码,但我只是不确定代码的哪一部分。

回答

1

您的结果以数组形式返回,这就是为什么它们不能作为字符串打印出来。实际上,您已经设置了标志OBJECT,并且结果将作为对象返回,其中包含wp_ml_char表中所有记录的字段值。 你应该尝试这样的:

function ml_results() { 
global $wpdb; 
$results = $wpdb->get_results('SELECT * FROM wp_ml_char', OBJECT); 
$output = ''; 
foreach($results as $item){ 
//and then for each field in wp_ml_char table you want to set in output should append to $output var: 
$output.= $item->field_name . " "; // field_name should be changed to name of actual field in wp_ml_char table 

} 
echo "<p>Your character's info {$output}</p>"; 

} 

add_shortcode('ml_return', 'ml_results'); 

困扰我的是实际的MySQL语句,这样你还没有定义更加精确的条件,而这个查询,你现在有,因为它是将返回所有结果一件事从wp_ml_char表中,所以你应该添加一些条件也可能是一些限制和抵消。

+0

这工作很好,这正是我想要的。我只是想明白为什么$ output变量本身需要被附加到那样。它工作正常,没有被追加太多。无论如何,非常感谢你Niklaz你一直是一个巨大的帮助! –

+0

@CodyTetreault,很高兴它帮助:)。关于$ output,无论你喜欢什么,都可以传递db记录值,我只给了你一个例子。例如,您只想传递一个字段。 在这种情况下,您不需要附加值。 但是,如果您有两个或多个要依次输出的字段,则可以采用其中一种方式来实现。 I.E. '$ output。= $ item-> title。 “”。 $用品 - >内容; ' 或'$ output。= $ item-> title; $ output。= $ item-> content; ' – niklaz