get_results за допомогою wpdb


12

Я намагаюся отримати інформацію про мою базі даних. Я хотів , щоб показати всі , pagesвикористовуючи цю інструкцію, але я отримую порожнійARRAY

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

echo $result; // display data

Вихід:

  ARRAY

EDIT : Після зміни наведених нижче пропозицій я зараз використовую це. але я все одно не отримую жодних результатів:

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

    }

Спробуйте обернути $wpdb->wp_postsфігурними брекетами, тобто. {$wpdb->wp_posts}..
t31о

Відповіді:


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

привіт @balamurugan, я спробував вашу відповідь, але я все одно не отримав ніяких результатів. ви можете побачити мою редагуючу частину вище.
користувач1933824

насправді те, що отримуєш ур і робиш видалення ... з мого коду. я тестував і отримувати всі сторінки ідентифікатор
Балаш

їм з допомогою мого редагування частини , як показано вище моєї посади. я спробував echo $resultпросто щоб переконатися , що їм вилучення даних з того, queryщо я отримую друк Array. коли я використовую echo $page->IDя не отримую нічого. їм на насправді не знаю , чому ..
user1933824

ви просто просто скопіюйте та вставте цей код повністю. Це все, щоб зробити результат.
Балас

так, спрацювало! коли я намагаюся переглянути свій і ваш код, єдиною різницею, яку я побачив, є $tablename = $wpdb->prefix.'posts';ця частина, яка не була в документації на кодекс ви можете мені пояснити, чому це працює?
користувач1933824

3

У вас незначне непорозуміння:

Під час дзвінка $wpdbви отримуєте список властивостей, які містять основні назви таблиць:

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

Отже, ваш остаточний запит виглядатиме так :

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

1
+1 за це, дякую. але мені потрібно було дати кредит тому, хто відповів на мене першим, він вже надав правильну відповідь, я просто не міг виконувати його вказівку.
користувач1933824

Звичайно. Sidenote: Як я вже зазначив, це $wpdb->prefixне слід використовувати для вбудованих таблиць. Просто зателефонуйте їм безпосередньо. Виправлено це і його відповідь.
кайзер

1

Спробуйте наступний код. Я зіткнувся з подібною проблемою і вирішив її, видаливши $ wpdb з поля 'FROM'.

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

echo $result; // display data

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.