get_results menggunakan wpdb


12

Saya mencoba mengambil informasi pada basis data saya. Saya ingin menampilkan semua pagesmenggunakan pernyataan ini, tapi saya kosongARRAY

global $wpdb;
$result = $wpdb->get_results (
        "
        SELECT * 
        FROM  $wpdb->wp_posts 
        WHERE post_type =  'page'
        "
        );

echo $result; // display data

Keluaran:

  ARRAY

EDIT : Setelah mengubah saran di bawah, saya sekarang menggunakan ini. tapi saya masih belum mendapatkan hasil apa pun:

global $wpdb;

    $posts = $wpdb->wp_posts;
    $result = $wpdb->get_results( " SELECT * FROM  $posts WHERE 'post_type' =  'page' "  );

    foreach ($result as $page) {
            echo $page->ID.'<br/>';

    }

Coba balut $wpdb->wp_postsdengan kurung kurawal, mis. {$wpdb->wp_posts}..
— t31os

Jawaban:


18
global $wpdb;

$result = $wpdb->get_results ( "
    SELECT * 
    FROM  $wpdb->posts
        WHERE post_type = 'page'
" );

foreach ( $result as $page )
{
   echo $page->ID.'<br/>';
   echo $page->post_title.'<br/>';
}

hai @balamurugan, saya mencoba jawaban Anda tetapi saya masih belum mendapatkan hasil apa pun. Anda dapat melihat bagian Edit saya di atas.
— user1933824

sebenarnya apa yang Anda dapatkan dan lakukan yang Anda hapus ... dari kode saya. saya mengujinya dan mendapatkan semua halaman id
— Balas

Saya menggunakan bagian edit saya seperti yang terlihat di atas posting asli saya. Saya mencoba echo $resulthanya untuk memastikan bahwa saya mengambil data dari queryapa yang saya dapatkan adalah cetak Array. ketika saya menggunakan echo $page->IDsaya tidak mendapatkan apa-apa. Saya benar-benar tidak yakin mengapa ..
— user1933824

Anda cukup menyalin & menempelkan kode itu sepenuhnya. Itu semua harus dilakukan untuk mendapatkan hasilnya.
— Balas

ya, itu berhasil! ketika saya mencoba untuk meninjau kode saya dan Anda, satu-satunya perbedaan yang saya lihat adalah bagian $tablename = $wpdb->prefix.'posts';ini bukan bagian dari dokumentasi codex. dapatkah Anda menjelaskan kepada saya mengapa itu berhasil?
— user1933824

3

Anda memiliki sedikit kesalahpahaman:

Saat menelepon $wpdb, Anda mendapatkan daftar properti yang berisi nama inti tabel:

// The custom prefix from wp-config.php
// only needed for custom tables
$wpdb->prefix

// Tables where you don't need a prefix: built in ones:
$wpdb->posts
$wpdb->postmeta
$wpdb->users

Jadi permintaan akhir Anda akan terlihat seperti ini:

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );

1
+1 untuk ini, terima kasih. tetapi saya perlu memberikan pujian kepada orang yang menanggapi saya terlebih dahulu, dia sudah memberikan jawaban yang benar, saya hanya tidak bisa mengikuti instruksinya.
— user1933824

Tentu. Sidenote: Seperti yang saya nyatakan, $wpdb->prefixseharusnya tidak digunakan untuk tabel bawaan. Panggil saja mereka secara langsung. Memperbaiki ini juga jawabannya.
— kaiser

1

Coba kode berikut. Saya menghadapi masalah yang sama dan menyelesaikannya dengan menghapus $ wpdb dari bidang 'FROM'.

global $wpdb;
$result = $wpdb->get_results (
            "
            SELECT * 
            FROM  wp_posts 
            WHERE post_type =  'page'
            "
            );

echo $result; // display data

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.