$ wpdb-> get_row () hanya mengembalikan satu baris?

21

Kenapa sih? Saya mencoba permintaan yang sama di konsol dan mengembalikan beberapa baris. Inilah pertanyaannya:

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

Itu terus mengembalikan baris tunggal yang sama ketika ada beberapa pengguna aktif. Apakah saya melewatkan sesuatu?

Joann
sumber

Jawaban:

40

Ada tiga cara untuk menarik data dari database.

1 $wpdb->get_var.: gunakan ini untuk mendapatkan nilai tunggal dari tabel database. Seperti jika Anda ingin menghitung jumlah total komentar. Anda dapat melakukannya dengan cara berikut:

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

2 $wpdb->get_row.: Untuk mengambil seluruh baris tabel, Anda dapat menggunakan ini.

Contoh:

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

ATAU

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

Dengan menggunakan ARRAY_Aparameter di get_row, data posting Anda dikembalikan sebagai array asosiatif. Atau, Anda bisa menggunakan ARRAY_Nparameter untuk mengembalikan data posting Anda dalam array yang diindeks secara numerik.

3 $wpdb->get_results.: SELECTKueri standar harus menggunakan fungsi get_results untuk mengambil beberapa baris data dari database.

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

dan Anda membutuhkan yang terakhir, seperti yang Anda harapkan.

enam
sumber
Contoh detail yang luar biasa ..
pixelngrain
Yakin! kenapa tidak ..
pixelngrain
0

solusi saya sederhana ..

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

Menggunakan:

<?php
echo count_results();
Bryan Contreras
sumber
4
Alangkah baiknya jika Anda juga bisa menjelaskan apa yang dilakukan kode ini selain mempostingnya.
bravokeyl
Ini menghitung baris dalam tabel, itu bukan jawaban untuk pertanyaan OP.
alexg