joann
  • 0
Новичок

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

  • 0

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

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

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

Share
  1. Он назван не просто так get_row()

    • 0
  2. Действительно, используйте get_row() только тогда, когда вы ожидаете получить один результат, иначе вы можете использоватьget_results()

    • 0
  3. Существует три способа извлечения данных из базы данных.

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

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

    • 0
  4. $wpdb->get_row('query', output_type, row_offset);
    

    row_offset (integer) Требуемая строка (0 — первая). По умолчанию 0.

    ва http://codex.wordpress.org/Class_Reference/wpdb

    • 0
  5. мое решение простое..

    <?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();
    
    • 0

Оставить ответ

You must login to add an answer.