$ wpdb-> get_row () chỉ trả về một hàng duy nhất?


21

Tại sao lại như vậy? Tôi đã thử cùng một truy vấn trong bảng điều khiển và nó trả về nhiều hàng. Đây là truy vấn:

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

Nó tiếp tục trả về cùng một hàng khi có một vài người dùng hoạt động. Tui bỏ lỡ điều gì vậy?

Câu trả lời:



40

Có ba cách để kéo dữ liệu từ cơ sở dữ liệu.

1 . $wpdb->get_var: sử dụng cái này để lấy một giá trị từ bảng cơ sở dữ liệu. Giống như nếu bạn muốn đếm tổng số ý kiến. Bạn có thể làm theo cách sau:

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

2 . $wpdb->get_row: Để lấy toàn bộ một hàng của bảng, bạn có thể sử dụng cái này.

Thí dụ:

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

HOẶC LÀ

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

Bằng cách sử dụng ARRAY_Atham số trong get_row, dữ liệu bài đăng của bạn được trả về dưới dạng một mảng kết hợp. Ngoài ra, bạn có thể sử dụng ARRAY_Ntham số để trả về dữ liệu bài đăng của mình trong một mảng được lập chỉ mục bằng số.

3 . $wpdb->get_results: Các SELECTtruy vấn tiêu chuẩn nên sử dụng hàm get_results để truy xuất nhiều hàng dữ liệu từ cơ sở dữ liệu.

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

và bạn cần cái cuối cùng, như bạn có thể mong đợi.


Ví dụ chi tiết tuyệt vời ..
pixelngrain

Chắc chắn rồi! tại sao không ..
pixelngrain


0

giải pháp của tôi rất đơn giản ..

<?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;
}

Sử dụng:

<?php
echo count_results();

4
Sẽ thật tuyệt nếu bạn cũng có thể giải thích những gì mã này làm khi nghiện đăng nó.
bravokeyl

Điều này đếm các hàng trong một bảng, nó không phải là một câu trả lời cho câu hỏi của OP.
alexg
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.