$ wpdb-> get_row () sadece tek bir satır döndürür mü?


21

Neden o? Konsolda aynı sorguyu denedim ve birden çok satır döndürdü. İşte sorgu:

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

Birkaç aktif kullanıcı olduğunda aynı tek sırayı döndürmeye devam eder. Bir şey mi eksik?

Yanıtlar:



40

Veritabanından veri almanın üç yolu vardır.

1 $wpdb->get_var.: bunu veritabanı tablosundan tek bir değer elde etmek için kullanın. Toplam yorum sayısını saymak istiyorsanız. Aşağıdaki şekilde yapabilirsiniz:

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

2 $wpdb->get_row.: Tablo satırının tamamını almak için bunu kullanabilirsiniz.

Örnek:

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

VEYA

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

ARRAY_AGet_row içindeki parametreyi kullanarak gönderi verileriniz ilişkili bir dizi olarak döndürülür. Alternatif olarak, ARRAY_Ngönderi verilerinizi sayısal olarak dizine alınmış bir dizide döndürmek için parametreyi kullanabilirsiniz .

3 $wpdb->get_results.: Standart SELECTsorgular, veritabanından birden fazla veri satırı almak için get_results işlevini kullanmalıdır.

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

ve beklediğiniz gibi sonuncusuna ihtiyacınız var.


Harika detay örnekleri ..
pixelngrain

Emin! neden olmasın ..
pixelngrain


0

benim çözümüm basittir.

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

kullanın:

<?php
echo count_results();

4
Bu kodun göndermeye ek olarak ne yaptığını da açıklarsanız çok iyi olur.
bravokeyl

Bu bir tablodaki satırları sayar, OP'nin sorusuna bir cevap değildir.
alexg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.