$ wpdb-> get_row () возвращает только одну строку?

21

Почему это? Я попробовал тот же запрос в консоли, и он возвратил несколько строк. Вот запрос:

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

Он продолжает возвращать одну и ту же строку, когда есть несколько активных пользователей. Я что-то пропустил?

Джоанн
источник

Ответы:

40

Есть три способа извлечения данных из базы данных.

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; 
?>

ИЛИ

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

При использовании ARRAY_Aпараметра в get_row ваши данные возвращаются в виде ассоциативного массива. В качестве альтернативы, вы можете использовать ARRAY_Nпараметр, чтобы вернуть ваши данные поста в числовом индексированном массиве.

3 $wpdb->get_results.: Стандартные SELECTзапросы должны использовать функцию get_results для извлечения нескольких строк данных из базы данных.

<?php 
global $wpdb;
$allposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish'") );
foreach ($allposts as $singlepost) { 
         echo '<p>' .$singlepost->post_title. '</p>';
}
?>

и вам нужен последний, как вы можете ожидать.

энам
источник
Замечательные подробные примеры ..
pixelngrain
Конечно! почему нет ..
pixelngrain
0

мое решение простое ..

<?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();
Брайан Контрерас
источник
4
Было бы здорово, если бы вы также могли объяснить, что этот код делает в дополнение к публикации.
Бравокейл
Это считает строки в таблице, это не ответ на вопрос ОП.
AlexG