$ wpdb-> get_row () повертає лише один рядок?


21

Чому це? Я спробував той самий запит у консолі, і він повернув кілька рядків. Ось запит:

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

Він продовжує повертати один і той же рядок, коли є кілька активних користувачів. Я щось пропускаю?

Відповіді:



41

Існує три способи витягування даних із бази даних.

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

і вам потрібен останній, як ви можете очікувати.


1
Чудові приклади деталей ..
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
Було б чудово, якщо ви також можете пояснити, що робить цей код на додаток до його опублікування.
bravokeyl

Це підраховує рядки в таблиці, це не відповідь на питання ОП.
алекс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.