$ 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_Aget_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.