실행 된 직후 실행 된 SQL을 인쇄하는 방법


26

실행 된 SQL 쿼리를 다음 바로 인쇄 할 수있는 방법을 찾고 있습니다.

$wpdb->query(
                $wpdb->prepare("INSERT 
                                INTO tbl_watchprosite SET 
                                keywords=%s,url_to_post=%s,description=%s,
                                date_captured=%s,crawl_id=%d,
                                image_main=%s,images=%s,brand=%s,
                                series=%s,model=%s,condition=%s,box=%s,
                                papers=%s,year=%s,case_size=%s,status=%s,listed=%s,
                                asking_price=%s,retail_price=%s,payment_info=%s,forum_id=%d",
                                $this->getForumSettings()->search_meta,$element->href,$post_meta['description'],current_time('mysql'),$cid,$post_meta['image_main'],$images,$post_meta[0],$post_meta[1],$post_meta[2],$post_meta[3],$post_meta[4],$post_meta[5],$post_meta[6],$post_meta[7],$status,$post_meta[9],$post_meta[10],$post_meta[11],$this->getForumSettings()->ID)
            );

쿼리에서 어떤 값이 가고 있는지 볼 수 있다면 좋을 것입니다.

감사


1
너무 늦었지만 나중에 참조 할 수 있음을 알고 있습니다. 당신은 쿼리에 전달하기 전에 준비 명령문을 에코 할 수 있습니다. 확실히 쉬울 것입니다.
Maciej Paprocki

답변:


51

$wpdb객체는 그것을 위해 세트를 받고 몇 가지 특성을 가지고 :

global $wpdb;

// Print last SQL query string
$wpdb->last_query
// Print last SQL query result
$wpdb->last_result
// Print last SQL query Error
$wpdb->last_error

참고 : 우선 WordPress의 루트 폴더에있는 파일에서 설정 define( 'SAVEQUERIES', true );해야 wp-config.php합니다.


흠하지만 내 경우에는 $ wpdb-> last_query에 아무것도 없습니다.
ravisoni

defined( 'SAVEQUERIES', true );당신 wp-config.php이나 ! defined( 'SAVEQUERIES' ) AND defined( 'SAVEQUERIES', true );당신의 대본 과 같은 것을 가지고 있습니까? 그렇지 않으면 작동하지 않습니다.
카이저

예, 나는 쿼리가 전혀 실행되지 않는다고 생각합니다. :(
ravisoni

1
wp_debug를 켜면 오류가 있거나 경고가 표시됩니다.
Kumar

워드 프레스 데이터베이스 오류 : [쿼리가 비어]
ravisoni

14

나는 여기에 3 가지 접근법을 나열했습니다.

  1. SAVEQUERIES바닥 글의 모든 쿼리 사용 및 인쇄
  2. $wpdb->last_query가장 최근에 실행 된 쿼리를 인쇄하는 데 사용하면 함수 디버깅에 유용합니다.
  3. Query Monitor와 같은 플러그인 사용

이것을 wp-config.php에 추가해야합니다.

 define('SAVEQUERIES', true);

그런 다음 테마 바닥 글에 다음 코드를 추가하십시오.

 <?php
  if (current_user_can('administrator')){
   global $wpdb;
   echo "<pre>Query List:";
   print_r($wpdb->queries);
   echo "</pre>";
 }//Lists all the queries executed on your page
?>

또는 마지막으로 실행 된 쿼리 만 인쇄하려면 $wpdb쿼리 함수 호출 바로 아래에 사용할 수 있습니다 .

global $wpdb;
echo $wpdb->last_query;//lists only single query

세 번째 접근 방식은 페이지에서 실행 된 모든 쿼리를 자세하게 나열하는 Query Monitor와 같은 플러그인을 사용하고 반환되는 행 수와 실행 시간 또는 느린 쿼리 인 경우와 관련된 기타 세부 정보를 사용하는 것입니다. http://wordpress.org/plugins/query-monitor/

DEV 환경에서만이 플러그인을 사용하는 것이 좋습니다. 실제 사이트에서는 활성화하지 마십시오. 또한 오류가 너무 많으면 쿼리 모니터가 때때로 템플릿 / 페이지의 5XX 오류와 같은 페이지에 문제를 일으킬 수 있습니다.


Ajax 시작 쿼리를 얻는 방법?
itsazzad

ajax 조치 핸들러 함수에서 동일하게 인쇄 할 수 있습니다.
Kumar

3

두 기능을 모두 추가해야합니다. 그렇지 않으면 오류가 표시되지 않습니다

$wpdb->show_errors(); 
$wpdb->print_error();

이 기능은 이와 같은 적절한 오류를 보여줍니다

여기에 이미지 설명을 입력하십시오


1

@kaiser의 최고의 투표 응답이 완전히 정확하지 않다고 덧붙이고 싶습니다.

// Print last SQL query string
$wpdb->last_query

반환 값은 문자열이 아니라 ARRAY 입니다. 따라서 마지막 쿼리를 출력하려면 다음을 수행하십시오.

echo 'Last query: '.var_export($wpdb->last_query, TRUE);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.