get_results bằng wpdb


12

Tôi đang cố gắng lấy thông tin trên cơ sở dữ liệu của mình. Tôi muốn hiển thị tất cả pagesbằng cách sử dụng câu lệnh này, nhưng tôi đang để trốngARRAY

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

echo $result; // display data

Đầu ra:

  ARRAY

EDIT : Sau khi thay đổi các đề xuất dưới đây, tôi hiện đang sử dụng điều này. nhưng tôi vẫn không nhận được kết quả nào:

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

    }

Hãy thử gói $wpdb->wp_postsvới niềng răng, nghĩa là. {$wpdb->wp_posts}..
t31os

Câu trả lời:


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

chào @balamurugan, tôi đã thử câu trả lời của bạn nhưng tôi vẫn không nhận được kết quả. bạn có thể thấy phần Chỉnh sửa của tôi ở trên.
dùng1933824

thực sự những gì bạn nhận được và làm bạn xóa ... khỏi mã của tôi. tôi đã thử nó và nhận được tất cả id trang
Balas

tôi sử dụng phần chỉnh sửa của tôi như đã thấy ở trên bài viết gốc của tôi. tôi đã cố gắng echo $resultđể đảm bảo rằng tôi đang lấy dữ liệu từ querynhững gì tôi nhận được là in Array. Khi tôi sử dụng echo $page->IDtôi không nhận được bất cứ điều gì. tôi thực sự không chắc tại sao ..
user1933824

bạn chỉ cần sao chép và dán mã đó hoàn toàn. Đó là tất cả để làm để có được kết quả.
Balas

vâng, nó đã làm việc Khi tôi cố gắng xem lại mã của mình và của bạn, sự khác biệt duy nhất tôi thấy là phần $tablename = $wpdb->prefix.'posts';này phần này không có trong tài liệu về codex. bạn có thể giải thích cho tôi tại sao nó hoạt động?
dùng1933824

3

Bạn có một sự hiểu lầm nhỏ:

Khi gọi $wpdb, bạn nhận được một danh sách các thuộc tính có chứa tên lõi của các bảng:

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

Vì vậy, truy vấn cuối cùng của bạn sẽ trông như thế này:

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

1
+1 cho điều này, cảm ơn bạn. nhưng tôi cần phải công nhận người trả lời tôi trước, anh ấy đã cung cấp câu trả lời đúng, tôi chỉ không thể làm theo chỉ dẫn của anh ấy.
dùng1933824

Chắc chắn rồi. Sidenote: Như tôi đã nói, $wpdb->prefixkhông nên sử dụng cho các bảng dựng sẵn. Chỉ cần gọi trực tiếp cho họ. Đã sửa đây là câu trả lời của anh ấy.
kaiser

1

Hãy thử đoạn mã sau. Tôi đã đối mặt với vấn đề tương tự và giải quyết nó bằng cách xóa $ wpdb khỏi trường 'TỪ'.

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

echo $result; // display data

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.