$ wpdb-> get_row () ส่งคืนแถวเดียวหรือไม่


21

ทำไมล่ะ ฉันลองใช้คำค้นหาเดียวกันในคอนโซลและส่งคืนหลายแถว นี่คือแบบสอบถาม:

$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);

มันจะส่งคืนแถวเดียวเหมือนเดิมเมื่อมีผู้ใช้หลายคน ฉันพลาดอะไรไปรึเปล่า?

คำตอบ:



40

มีสามวิธีในการดึงข้อมูลจากฐานข้อมูล

1. $wpdb->get_var: ใช้สิ่งนี้เพื่อรับค่าเดียวจากตารางฐานข้อมูล เช่นถ้าคุณต้องการนับจำนวนความคิดเห็นทั้งหมด คุณสามารถทำได้ด้วยวิธีต่อไปนี้:

<?php 
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;")); 
echo '<p>Total comments: ' . $comment_count . '</p>';
?>

2. $wpdb->get_row: ในการเรียกแถวทั้งแถวคุณสามารถใช้สิ่งนี้

ตัวอย่าง:

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title; 
?>

หรือ

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost); 
?>

โดยใช้ARRAY_Aพารามิเตอร์ใน get_row ข้อมูลโพสต์ของคุณจะถูกส่งกลับเป็นอาร์เรย์เชื่อมโยง หรือคุณสามารถใช้ARRAY_Nพารามิเตอร์เพื่อส่งคืนข้อมูลการโพสต์ของคุณในอาร์เรย์ที่จัดทำดัชนีเป็นตัวเลข

3. $wpdb->get_results: SELECTเคียวรีมาตรฐานควรใช้ฟังก์ชัน get_results เพื่อดึงข้อมูลหลายแถวจากฐานข้อมูล

<?php 
global $wpdb;
$allposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish'") );
foreach ($allposts as $singlepost) { 
         echo '<p>' .$singlepost->post_title. '</p>';
}
?>

และคุณต้องการสิ่งสุดท้ายตามที่คุณคาดหวัง


ตัวอย่างรายละเอียดที่ยอดเยี่ยม ..
pixelngrain

แน่นอน! ทำไมไม่ ..
pixelngrain


0

ทางออกของฉันง่ายมาก ..

<?php
function count_results() {
    # use the data base
    global $wpdb;

    # Query to count all results from one table
    $sql_count_results = '
        SELECT count(*) as count
        FROM `YOUR_TABLE`;';

    # Ejecute function
    $results = $wpdb->get_row( $sql_count_results , OBJECT );

    # Return results
    return $results->count;
}

ใช้:

<?php
echo count_results();

4
มันจะดีถ้าคุณยังสามารถอธิบายว่ารหัสนี้ทำอะไรนอกจากการโพสต์
bravokeyl

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