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/>';

    }
pengguna1933824
sumber
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/>';
}
Balas
sumber
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'" );
kaisar
sumber
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
Wahid Kadwaikar
sumber