$ wpdb-> get_row()は単一の行のみを返しますか?


21

それはなぜです?コンソールで同じクエリを実行すると、複数の行が返されました。クエリは次のとおりです。

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

複数のアクティブなユーザーがいる場合、同じ単一の行を返し続けます。何か不足していますか?

回答:



40

データベースからデータをプルするには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_Aget_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
投稿に加えて、このコードが何をするのかについても説明できれば素晴らしいと思います。
bravokeyl

これはテーブル内の行をカウントしますが、OPの質問に対する答えではありません。
alexg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.