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

แก้ไข : หลังจากเปลี่ยนคำแนะนำด้านล่างตอนนี้ฉันใช้สิ่งนี้ แต่ฉันยังไม่ได้รับผลลัพธ์ใด ๆ :

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}..
t31os

คำตอบ:


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 ฉันลองตอบ แต่ฉันยังไม่ได้รับผลลัพธ์ใด ๆ คุณสามารถเห็นส่วนแก้ไขของฉันด้านบน
user1933824

จริงๆแล้วสิ่งที่คุณได้รับและทำคุณลบ ... จากรหัสของฉัน ฉันทดสอบแล้วรับ id หน้าทั้งหมด
Balas

ฉันใช้ส่วนแก้ไขของฉันตามที่เห็นด้านบนโพสต์ต้นฉบับของฉัน ฉันพยายามecho $resultเพียงเพื่อให้แน่ใจว่า im ดึงข้อมูลจากสิ่งที่ฉันได้รับคือการพิมพ์query Arrayเมื่อฉันใช้echo $page->IDฉันไม่ได้อะไรเลย ฉันไม่แน่ใจจริงๆว่าทำไม ..
user1933824

คุณเพียงแค่คัดลอกและวางรหัสนั้นอย่างสมบูรณ์ นั่นคือทั้งหมดที่ต้องทำเพื่อให้ได้ผลลัพธ์
บาลาส

ใช่มันใช้งานได้! เมื่อฉันพยายามตรวจสอบรหัสของฉันและของคุณความแตกต่างเดียวที่ฉันเห็นคือส่วน$tablename = $wpdb->prefix.'posts';นี้ไม่ได้อยู่ในเอกสารประกอบ Codex คุณช่วยอธิบายให้ฉันฟังได้ไหมว่าทำไมมันถึงใช้ได้
user1933824

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 สำหรับสิ่งนี้ขอบคุณ แต่ฉันต้องให้เครดิตคนที่ตอบฉันก่อนเขาให้คำตอบที่ถูกต้องแล้วฉันแค่ทำตามคำสั่งของเขาไม่ได้
user1933824

แน่ใจ Sidenote: ดังที่ฉันได้กล่าวไปแล้ว$wpdb->prefixไม่ควรใช้สำหรับตารางในตัว เพียงแค่เรียกพวกเขาโดยตรง แก้ไขนี่คือคำตอบของเขาเช่นกัน
ไกเซอร์

1

ลองรหัสต่อไปนี้ ฉันประสบปัญหาที่คล้ายกันและแก้ไขได้โดยลบ $ wpdb จากฟิลด์ 'FROM'

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

echo $result; // display data

0

โดย "blank Array" คุณหมายถึง 'อาร์เรย์ว่าง' หรือเป็นเอาต์พุต 'ARRAY' ถ้าเป็นอันหลังก็เป็นผลลัพธ์ที่คาดหวัง คุณต้องวนลูปผ่านอาร์เรย์นั้นและแสดงผลลัพธ์ตามนั้น

การอ้างอิง: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.