ทำไมล่ะ ฉันลองใช้คำค้นหาเดียวกันในคอนโซลและส่งคืนหลายแถว นี่คือแบบสอบถาม:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
มันจะส่งคืนแถวเดียวเหมือนเดิมเมื่อมีผู้ใช้หลายคน ฉันพลาดอะไรไปรึเปล่า?
ทำไมล่ะ ฉันลองใช้คำค้นหาเดียวกันในคอนโซลและส่งคืนหลายแถว นี่คือแบบสอบถาม:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
มันจะส่งคืนแถวเดียวเหมือนเดิมเมื่อมีผู้ใช้หลายคน ฉันพลาดอะไรไปรึเปล่า?
คำตอบ:
แน่นอนใช้get_row()
เฉพาะเมื่อคุณคาดว่าจะได้รับผลลัพธ์อย่างอื่นคุณสามารถใช้get_results()
มีสามวิธีในการดึงข้อมูลจากฐานข้อมูล
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>';
}
?>
และคุณต้องการสิ่งสุดท้ายตามที่คุณคาดหวัง
$wpdb->get_row('query', output_type, row_offset);
row_offset (จำนวนเต็ม) แถวที่ต้องการ (0 คือแถวแรก) ค่าเริ่มต้นเป็น 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();