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