sourcecode

Word press - get_results() - 실패 또는 비어 있는지 확인하는 방법

codebag 2023. 2. 7. 19:52
반응형

Word press - get_results() - 실패 또는 비어 있는지 확인하는 방법

Wordpress 함수 $wpdb-> get_results()를 사용합니다.

https://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

다음과 같이 되어 있습니다.

일치하는 행을 찾을 수 없거나 데이터베이스 오류가 있는 경우 반환값은 빈 배열이 됩니다.

그러면 쿼리가 실패했는지, 빈 상태인지 어떻게 알 수 있나요?

사용하다

$results=$wpdb->get_results($yoursql);
if (count($results)> 0){
    //do here

}

하지만 쿼리가 실패했는지 알고 싶다면

$wpdb -> show_errors ();
$wpdb -> get_results ($wpdb -> prepare($sql));
$wpdb -> print_error ();

여기 파티에는 좀 늦었지만 같은 걸 찾고 있어요.나는 을 훑어보았다.wp-db.php버전 4.4.2의 코드.

1422번 줄, 메서드 내부flush()리셋하는 코드가 있습니다.last_error속성:

$this->last_error  = '';

이것.flush()메서드는 에서 호출됩니다.query()1693행의 메서드:

$this->flush();

get_results()메서드 호출query()회선 2322:

if ( $query ) {
    $this->query( $query );
} else {
    return null;
}

이것으로 우리는 매번 어느 정도 확신 할 수 있다.get_results()(또는get_row()너무 많이)가 호출됩니다.query()그리고.flush()둘 다 호출되기 때문에last_error쿼리가 실행되기 전에 빈 문자열로 설정됩니다.

따라서 쿼리가 실행된다고 가정하면(실행하지 않으면),null반환됩니다(예를 들어 쿼리가 비어 있는 경우).last_error어떤 이유로 쿼리가 실패했을 경우 오류 메시지가 표시됩니다.

부터last_errorflush()ed/display는 매번 이전에 실행된 쿼리의 마지막 오류가 아니라 마지막으로 실행된 쿼리의 오류만 포함해야 합니다.이 점을 염두에 두고 안심하고 사용할 수 있습니다.last_error쿼리에 문제가 있는지 여부를 확인합니다.

$results = $wpdb->get_results($sql);
if (is_null($results) || !empty($wpdb->last_error)) {
    // Query was empty or a database error occurred
} else {
    // Query succeeded. $results could be an empty array here
}

내 생각에는 가장 직관적인 것은 아니지만, 충분해 보인다.

개인적으로, 저는 제 수업 내용을wpdb나 자신을 위해서.이건 내 거야getResults()방법.

public function getResults($query, $bindings = [])
{
    // Prepare the statement (My prepare method inspects $query and just returns it if there's no bindings, otherwise it uses $wpdb->prepare()        
    $prepared = $this->prepare($query, $bindings);

    // Execute the statement
    $rows = $this->db->get_results($prepared, ARRAY_A);

    // If an array was returned and no errors occurred, return the result set
    if (is_array($rows) && empty($this->db->last_error)) {
        return $rows;
    }

    // On failure, return false
    return false;
}

이게 도움이 됐으면 좋겠다.

Wpdb->wordpress의 get_results 함수는 성공하면 결과를 반환합니다.그렇지 않으면 null을 반환합니다.쿼리가 실패하면 여러 가지 이유가 있을 수 있습니다.빈 결과를 반환하는 get_results() 디버깅에 대한 자세한 내용은 여기를 참조하십시오.

다음과 같은 기능을 사용할 수 있지만wpdb->show_error()sql 쿼리를 실행한 후 마지막 오류가 무엇이었는지 확인합니다. 때때로 이 오류는 빈 상태로 반환되고 사용을 시도합니다.wpdb->last_query생성되는 최종 쿼리를 확인합니다.

언급URL : https://stackoverflow.com/questions/29274268/wordpress-get-results-how-to-know-if-failed-or-empty

반응형