为什么?我在控制台中尝试了相同的查询,并返回了多行。查询如下:

$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);

当有多个活动用户时,它会不断返回同一行。我想念什么吗?

#1 楼

实际上,仅在希望获得一个结果时才使用get_row(),否则可以使用get_results()

评论


有关参考,请参阅developer.wordpress.org/reference/classes/wpdb/get_row和developer.wordpress.org/reference/classes/wpdb/get_results

–user51928
17年6月21日在22:54



#2 楼

有三种方法可以从数据库中提取数据。

1。 $wpdb->get_var:使用它从数据库表中获取单个值。就像您要计算评论总数一样。您可以按照以下方式进行操作:

<?php 
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;")); 
echo '<p>Total comments: ' . $comment_count . '</p>';
?>


2。 $wpdb->get_row:要检索整个表行,可以使用它。

示例:

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title; 
?>


OR

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost); 
?>


通过在get_row中使用ARRAY_A参数,您的帖子数据将作为关联数组返回。或者,您可以使用ARRAY_N参数以数字索引数组形式返回帖子数据。

3。 $wpdb->get_results:标准的SELECT查询应使用get_results函数从数据库中检索多行数据。 br />

评论


精彩的细节示例。

–pixelngrain
13年1月27日在17:31

当然!为什么不..

–pixelngrain
13年1月28日在16:45

真的是很好的例子。对于最后一个示例中的速度优化,我建议将以下内容更改为:($ allposts as $ singlepost)更改为:($ allposts as $ k => $ singlepost)

–Cyborg
20 Dec 30'2:39

#3 楼

$wpdb->get_row('query', output_type, row_offset);


行偏移量
(整数)所需的行(0为第一行)。默认为0.

va http://codex.wordpress.org/Class_Reference/wpdb

#4 楼

我的解决方案很简单..

<?php
function count_results() {
    # use the data base
    global $wpdb;

    # Query to count all results from one table
    $sql_count_results = '
        SELECT count(*) as count
        FROM `YOUR_TABLE`;';

    # Ejecute function
    $results = $wpdb->get_row( $sql_count_results , OBJECT );

    # Return results
    return $results->count;
}


使用:

<?php
echo count_results();


评论


如果您除了发布代码之外还可以解释此代码的功能,那将是很好的。

–bravokeyl
16年11月16日在9:21

这将对表中的行进行计数,这不是对OP问题的答案。

– alexg
19年1月15日在22:02