[php] Codeigniter 모델에서 SQL 문을 인쇄하는 방법

내 모델에 SQL 문이 있습니다.

나는 다음 말한다

$query = $this->db->query($sql, array(fields, fields1);

if ($query) {
    return true:
} else {
    echo "failed";
    return false;
}

내 쿼리는 항상 실패합니다. 내 데이터베이스로 전송되는 정확한 SQL 문을 인쇄하도록 PHP를 얻으려면 어떻게해야합니까? 그리고 내 PHP보기, 페이지에 표시



답변

쿼리 문자열을 표시하려면 :

print_r($this->db->last_query());    

질의 결과를 표시하려면 :

print_r($query);

Profiler 클래스는 페이지 하단에 벤치 마크 결과, 실행 한 쿼리 및 $ _POST 데이터를 표시합니다. 프로파일 러를 활성화하려면 Controller 메서드 내에서 다음 줄을 배치하십시오.

$this->output->enable_profiler(TRUE);

프로파일 링 사용자 가이드 :
https://www.codeigniter.com/user_guide/general/profiling.html


답변

이것을 사용할 수 있습니다 :

$this->db->last_query();

“실행 된 마지막 쿼리 (결과가 아닌 쿼리 문자열)를 반환합니다.”

Reff : https://www.codeigniter.com/userguide3/database/helpers.html


답변

ActiveRecord 생성 SQL을 표시 할 수 있습니다.

쿼리를 실행하기 전에 :

$this->db->_compile_select(); 

그리고 실행 후 :

$this->db->last_query(); 


답변

쿼리에 대한 빠른 테스트가 필요한 경우이 방법이 좋습니다.

echo $this->db->last_query(); die;


답변

사용에 성공하지 못 _compiled_select()하거나 get_compiled_select()방금 db개체를 인쇄 한 후 queries속성 에서 쿼리를 볼 수 있습니다 .

직접 시도해보십시오.

var_dump( $this->db );

쿼리가 하나만 있다는 것을 알고있는 경우 직접 인쇄 할 수 있습니다.

echo $this->db->queries[0];


답변

get_compiled_select쿼리를 실행하기 전에 인쇄 할 수 있는 새로운 공용 메서드 가 있습니다. _compile_select이제 보호되므로 사용할 수 없습니다.

echo $this->db->get_compiled_select(); // before $this->db->get();


답변

마지막에 간단히 사용할 수 있습니다 ..

echo $this->db->last_query();